题目链接
#include<iostream>
#include<cstring>
#include<cstdio>
#define mem(a,b) memset((a),b,sizeof(a))
const int inf=1e9+10;
typedef long long ll;
const int N=100010;
using namespace std;
char a[1010],b[1010];
int dp[1010][1010];
int main()
{
while(scanf("%s%s",a+1,b+1)!=EOF)
{
mem(dp,0);
int lena=strlen(a+1);
int lenb=strlen(b+1);
for(int i=0;i<=lena;i++)
{dp[0][i]=0;dp[i][0]=0;}
for(int i=1;i<=lena;i++)
{
for(int j=1;j<=lenb;j++)
{
if(a[i]==b[j])
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
dp[i][j]=max(max(dp[i][j],dp[i-1][j]),dp[i][j-1]);
}
}
printf("%d\n",dp[lena][lenb]);
}
return 0;
}