您的位置:首页 > 其它

最长公共子序列 LCS

2017-08-19 11:05 288 查看
感觉这里最烦人的是字符串从0开始存,所以应该注意位置与下标的区别

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

using namespace std;
const int N = 510;

int main()
{
char x
, y
;
int len1, len2;
int len

;
while(~scanf("%s%s", x, y))
{
len1 = strlen(x);
len2 = strlen(y);
memset(len, 0, sizeof(len));
for(int i = 1; i <= len1; i++)
{
for(int j = 1; j <= len2; j++)
{
if(x[i-1] == y[j-1])
len[i][j] = len[i-1][j-1] + 1;
else
len[i][j] = max(len[i][j-1], len[i-1][j]);
}
}
int MAX = 0;
for(int i = 1; i <= len1; i++)
for(int j = 1; j <= len2; j++)
if(len[i][j] > MAX)
MAX = len[i][j];
printf("%d\n", MAX);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: