您的位置:首页 > 其它

文章标题 nyoj 36 最长公共子序列

2016-08-09 12:11 302 查看
最长公共子序列

时间限制:3000 ms | 内存限制:65535 KB

难度:3

描述

咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。

tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,

且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。

输入

第一行给出一个整数N表示待测数据组数

接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000.

输出

每组测试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。

样例输入

2

asdf

adfsd

123abc

abc123abc

样例输出

3

6

#include

include

include

define N 1010

char s1
,s2
;

int n,t,len1,len2,d

;

int main()

{

cin >> t;

while(t–)

{

memset(d,0,sizeof(d));

cin>>s1>>s2;

len1 = strlen(s1);

len2 = strlen(s2);

for(int i=1;i<=len1;i++)

{

for(int j=1;j<=len2;j++)

{

if(s1[i-1]==s2[j-1])

d[i][j]=d[i-1][j-1]+1;

else

d[i][j]=max(d[i-1][j],d[i][j-1]);

}

}

printf(“%d\n”,d[len1][len2]);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nyoj-36