个人模板 最长公共连续子序列
2017-05-05 22:42
337 查看
#include<bits/stdc++.h> using namespace std; void getLCS(char* str1, char* str2) { int len1 = strlen(str1); int len2 = strlen(str2); int matrix[len1]; //str1为x方向 //初始化matrix for (int i = 0; i < len1; i++) { matrix[i] = 0; } int maxValue;//str2为y方向,最多有len2个最大值 int maxIndex; //初始化maxValue和maxIndex maxValue = -1; maxIndex = -1; for (int i = 0; i < len2; i++) { for (int j = len1 - 1; j >= 0; j--) { //扫描str1与str2的各个字符的匹配情况 if (str2[i] == str1[j]) { if (j == 0) { matrix[j] = 1; } else { matrix[j] = matrix[j - 1] + 1; } } else { matrix[j] = 0; } if (matrix[j] != 0 && matrix[j] > maxValue) { //更新maxValue的值 maxValue = matrix[j]; maxIndex = j; } } } for(int i = maxIndex - maxValue +1; i < maxIndex + 1; i++) { printf("%c",str1[i]); } printf("\n"); } int main() { int n; char a[101],b[101]; while(scanf("%d",&n)==1) { for(int i=0; i<n; i++) { scanf("%s%s",a,b); getLCS(a,b); } } }
相关文章推荐
- CSU 1120 病毒(经典模板例题:最长公共递增子序列)
- BNUOJ 4215 最长公共连续子序列
- 【模板】最长公共上升子序列
- [笔试]阿里笔试-最长公共连续子序列
- 个人模板【最长公共连续子序列】
- HDU1423&ZOJ2432 - Greatest Common Increasing Subsequence(LCIS最长公共上升子序列模板)
- 模板 最长公共递增子序列
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
- 最长公共序列 最长递增子序列 最长公共递增子序列 模板
- HDU 1423 Greatest Common Increasing Subsequence (最长公共上升子序列)【模板】
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
- hdu5902 GCD is Funny(错) && hdu5904 LCIS(最长公共连续上升子序列)
- 最长公共上升子序列(LICS) 模板
- 【EPI-6.6】最长连续递增子序列-启发式搜索
- LIS 最长单调子序列模板
- 最长公共上升子序列
- 求两个字符串的(连续的)最长公共子串
- 【100题】最长公共子串--非连续子串----动态规划
- 最长公共上升子序列
- 最长上升子序列模板