史上最经典的 dp 要把它吃透
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
char a[1000],b[1000];
int c[1000][1000],lena,lenb,i,j;
using namespace std;
int main()
{
while(scanf("%s%s",a,b)!=EOF)
{
lena=strlen(a);lenb=strlen(b);
memset(c,0,sizeof(c));
for(i=0;i<lena;i++)
{
for(j=0;j<lenb;j++)
{
if(a[i]==b[j])
c[i+1][j+1]=c[i][j]+1;
else
c[i+1][j+1]=max(c[i][j+1],c[i+1][j]);
}
}
printf("%d\n",c[lena][lenb]);
}
return 0;
}