#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#define LL long long
using namespace std;
const int maxn=1e3+10;
const double eps=1e-6;
string s1[110],s2[110];
int dp[110][110];
/*void print(int i,int j)
{
if(s1[i-1]==s2[j-1])
print(i-1,j-1);
else if(dp[i][j]==dp[i-1][j])
print(i-1,j);
else
print(i,j-1);
}*/
int main()
{
while(1)
{
string s;
int len1=1,len2=1;
cin>>s;
if(s=="")
break;
s1[len1++]=s;
while(cin>>s&&s!="#")
s1[len1++]=s;
while(cin>>s&&s!="#")
s2[len2++]=s;
// for(int i=0;i<len1;i++)
// cout<<s1[i]<<' ';
// cout<<endl;
for(int i=1;i<len1;i++)
for(int j=1;j<len2;j++)
if(s1[i]==s2[j])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
//cout<<dp[len1-1][len2-1]<<endl;
string tem[110];
int ans=dp[len1-1][len2-1];
int k=ans;
for(int i=len1-1;i>=1;i--)
for(int j=len2-1;j>=1;j--)
{
if(s1[i]==s2[j]&&dp[i][j]==ans)
{
tem[ans]=s1[i];
ans--;
}
}
for(int i=1;i<k;i++)
cout<<tem[i]<<' ';
cout<<tem[k]<<endl;
//print(len-1,len2-1);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交