#include <bits/stdc++.h>
using namespace std;
int dp[1010][1010];
int main()
{
int i,j,cnt;
char ans[1010];
string a,b;
while(cin>>a>>b)
{
memset(dp,0,sizeof(dp));
for(i=1;i<=a.length();i++)
{
for(j=1;j<=b.length();j++)
{
if(a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}
cnt=0;
for(i=a.length(),j=b.length();i>=1&&j>=1;)
{
if(a[i-1]==b[j-1])
{
ans[cnt++]=a[i-1];
i--;
j--;
}
else
{
if(dp[i][j]==dp[i-1][j])
i--;
else
j--;
}
}
for(i=cnt-1;i>=0;i--)
printf("%c",ans[i]);
printf("\n");
}
}
51nod 1006 最长公共子序列Lcs
最新推荐文章于 2018-06-10 01:37:55 发布