#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
const int maxlen=201;
int max(int a,int b){
return a>b?a:b;
}
int c[maxlen][maxlen],n,i,j,l1,l2;
char x[maxlen],y[maxlen];
string z="";
int main(){
scanf("%s%s",x,y);
l1=strlen(x);
l2=strlen(y);
for(i=1;i<=l1;i++)
for(j=1;j<=l2;j++)
if(x[i-1]==y[j-1])
c[i][j]=c[i-1][j-1]+1;
else
c[i][j]=max(c[i-1][j],c[i][j-1]);
printf("%d\n",c[l1][l2]);
i=l1;
j=l2;
while(i && j)
if(x[i-1]==y[j-1]){
z=x[--i]+z;
j--;
}
else
if (c[i-1][j]>c[i][j-1])
i--;
else
j--;
printf("%s\n",z.c_str());
return 0;
}
最长公共子序列
最新推荐文章于 2020-04-22 11:40:18 发布