poj1458(LCS)
lcs
#include"iostream"
using namespace std;
int c[1001][1001];
int Max(int a, int b)
{
return a>b?a:b;
}
void LCS(char aa[], char bb[], int x, int y)
{
int i,j;
for(i=0;i<=x;i++)
c[i][0]=0;
for(j=0;j<=y;j++)
c[0][j]=0;
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
{
if(aa[i-1]==bb[j-1]) {c[i][j]=c[i-1][j-1]+1;}
else { c[i][j]=Max( c[i][j-1], c[i-1][j]);}
}
}
}
int main()
{
char a[1001],b[1001];
int L1,L2;
while(scanf("%s %s",a,b)!=EOF)
{
int L1=strlen(a);
int L2=strlen(b);
LCS(a, b, L1, L2);
cout<<c[L1][L2]<<endl;
}
return 0;
}