传送门:UVA10405
直接上代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define MAX 1005
int n,m;
int dp[MAX][MAX];
char s[MAX],t[MAX];
int main()
{
while(gets(s)&&gets(t))
{
n=strlen(s);
m=strlen(t);
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i]==t[j])
dp[i+1][j+1]=dp[i][j]+1;
else
dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);
}
}
cout<<dp[n][m]<<endl;
}
return 0;
}