#include<bits/stdc++.h>
using namespace std;
int shu[3010][3010];
int abs_abs[3010][3010];
void S(string s,int k,int u)
{
if(k==0 || u==0) return;
if(abs_abs[k][u]==0)
{
S(s,k-1,u-1);
cout<<s[k-1];
}
else if(abs_abs[k][u]==-1)
{
S(s,k-1,u);
}
else S(s,k,u-1);
}
int main(){
string s,t;
cin>>s>>t;
int len1=s.length(),len2=t.length();
/*统计长度*/
memset(shu,0,sizeof(shu));//赋值
for(int i=1;i<=len1;i++)
for(int u=1;u<=len2;u++)
{
if(s[i-1]==t[u-1])
{
shu[i][u]=shu[i-1][u-1]+1;
abs_abs[i][u]=0;
}
else if(shu[i-1][u]>=shu[i][u-1])
{
shu[i][u]=shu[i-1][u];
abs_abs[i][u]=-1;
}
else
{
shu[i][u]=shu[i][u-1];
abs_abs[i][u]=1;
}
}
S(s,len1,len2);
}
09-21
3551
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)