最长公共子序列 记录子序列~

#include<stdio.h>
#include
<string.h>
char a[101],b[101],d[101];
int c[101][101];
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int lena,lenb,i,j,k,m;
while(scanf("%s%s",a+1,b+1)!=EOF)
{
m
=0;
memset(d,
0,sizeof(d));
lena
=strlen(a+1);
lenb
=strlen(b+1);
for(i=0;i<=lena;i++)
c[
0][i]=0;
for(j=0;j<=lenb;j++)
c[j][
0]=0;
k
=0;
for(i=1;i<=lena;i++)
for(j=1;j<=lenb;j++){
if(a[i]==b[j])
{ c[i][j]
=c[i-1][j-1]+1;
if(c[i][j]>m)
{ d[k]
=a[i]; k++; }
}
else
c[i][j]
=max(c[i-1][j],c[i][j-1]);
if(c[i][j]>m)
m
=c[i][j];
}
printf(
"%d\n",c[lena][lenb]);
printf(
"%s\n",d);
}
return 0;}
posted @ 2011-05-16 22:37  Crazy_yiner  阅读(202)  评论(0编辑  收藏  举报