Problem Description给定两个序列X={x1,x2,xm}和Y={y1,y2,yn},找出x和y的最长公共子序列。
输入数据有多个组,每组有两行。 每行包含不超过500个表示序列x和y的字符串(输入均为大写字母(a,z ) )。
Output每组输出一行,表示求出的最长的公共子序列的长度,如果不存在公共子序列,则输出0。
sampleinputabcbdabbdcabasampleoutput 4h int
#include stdio.h
#include stdlib.h
#define N 500
#include string.h
int main () )
{
int i,j,m,n,c[N][N];
char x[N],y[N];
while(gets(y ) x gets (y ) )
{
m=Strlen(x;
c[i][0]=0;
n=Strlen(y;
c[0][j]=0;
for(I=1; i=m; I )
for(j=1; j=n; j )
{
if(x(I-1 )==y (j-1 ) )
c[i][j]=c[i-1][j-1] 1;
ELSEif(c[I-1][j]c[I][j-1] ) )
c[i][j]=c[i-1][j];
else c[i][j]=c[i][j-1];
}
printf(%d(n ),c[m][n];
}
返回0;
}
加油哦!