求LCS,用n^2的方法可以过
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1020;
char stra[maxn],strb[maxn];
int dp[maxn][maxn];
int LCS()
{
memset(dp,0,sizeof(dp));
int lena=strlen(stra);
int lenb=strlen(strb);
for(int i=0;i<lena;i++)
for(int j=0;j<lenb;j++)
{
if(stra[i]==strb[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]);
}
return dp[lena][lenb];
}
int main()
{
while(gets(stra)!=NULL)
{
gets(strb);
printf("%d\n",LCS());
}
return 0;
}