http://acm.pku.edu.cn/JudgeOnline/problem?id=1458
#include<stdio.h>
#include<string.h>
int f[505][505];
char a[1000],b[1000];
int main()
{
while(scanf("%s %s",a,b)!=EOF)
{
int len1,len2,i,j,k,max;
len1=strlen(a);
len2=strlen(b);
memset(f,0,sizeof(f));
max=0;
for(i=1;i<=len1;i++)
{
for(j=1;j<=len2;j++)
{
if(a[i-1]==b[j-1])
f[i][j]=f[i-1][j-1]+1;
else
{
f[i][j]=f[i][j-1]>f[i-1][j]?f[i][j-1]:f[i-1][j];
}
}
}
printf("%d/n",f[len1][len2]);
}
return 0;
}