求两个字符串的最长公共子序列的长度(动态规划)
# include<stdio.h>
# include<string.h>
# define N 1000
int str[N+2][N+2];
int max(int a,int b)
{
if(a>=b) return a;
else return b;
}
int main()
{
int i,j,la,lb;
char str1[N+1],str2[N+1];
while(scanf("%s%s",str1,str2)!=EOF)
{
la=strlen(str1);
lb=strlen(str2);
for(i=0;i<=la;i++)
str[0][i]=0;
for(j=0;j<=lb;j++)
str[j][0]=0;
for(j=0;j<la;j++)
for(i=0;i<lb;i++)
{
if(str1[j]==str2[i])
str[i+1][j+1]=str[i][j]+1;
else str[i+1][j+1]=max(str[i][j+1],str[i+1][j]);
}
printf("%d/n",str[lb][la]);
}
return 0;
}
posted on 2012-01-26 17:35 [S*I]SImMon_WCG______* 阅读(901) 评论(0) 编辑 收藏 举报