您的位置:首页 > 其它

最长公共子序列

2013-07-19 19:25 423 查看
#include<stdio.h>
#include<string.h>
int s[20][20];
int max(int a,int b)
{
if(a>=b)
{
return a;
}
else
{
return b;
}
}
int lcs(int n,int m,char x[],char y[])
{
int i,j;
for(i=0;i<n;i++)
{
s[i][0]=0;
}
for(i=1;i<m;i++)
{
s[0][i]=0;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(x[i]==y[j])
{
s[i][j]=s[i-1][j-1]+1;
}
else
{
s[i][j]=max(s[i-1][j],s[i][j-1]);
}
}
}
return s[n-1][m-1];
}
int main()
{
int s[20][20];
int len1,len2;
char x[20],y[20];
while(scanf("%s%s",x,y)!=EOF)
{
len1=strlen(x);
len2=strlen(y);
printf("%d\n",lcs(len1,len2,x,y));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  最长公共子序列