其实就是LCS。最长公共子序列。
DP入门。
2个循环。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
short v[1001][1001];
int main()
{
char a[1001],b[1001];
int i,j,la,lb;
while(~scanf("%s%s",a,b))
{
la=strlen(a),lb=strlen(b);
memset(v,0,sizeof(v));
for(i=1;i<=la;i++)
for(j=1;j<=lb;j++)
{
if(a[i-1]==b[j-1])v[i][j]=v[i-1][j-1]+1;
else v[i][j]=max(v[i-1][j],v[i][j-1]);
}
printf("%d\n",v[i-1][j-1]);
}
}