题目:http://acm.hdu.edu.cn/showproblem.php?pid=1159
公共序列裸题,公式在手,天下我有
#define max(a,b) ( (a)>(b)?(a):(b))
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
char a[500],b[500];
int i,j,lena,lenb,dp[500][500];
while(scanf("%s %s",a,b) !=EOF)
{
lena=strlen(a);
lenb=strlen(b);
memset(dp,0,sizeof(dp));
for(i=1;i<=lena;i++)
for(j=1;j<=lenb;j++)
{
if(a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
printf("%d\n",dp[lena][lenb]);
}
return 0;
}