AcWing 3692. 最长连续公共子序列
原题链接
简单
作者:
最后五分钟
,
2024-09-09 18:32:01
,
所有人可见
,
阅读 6
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int f[N][N];
int main()
{
string a,b;
cin>>a>>b;
int res=0,idx=0;
for(int i=0;i<a.size();i++)
{
for(int j=0;j<b.size();j++)
{
if(a[i]==b[j])
{
f[i][j]=1;
if(f[i][j]>=res)res=f[i][j],idx=i;
int k=i-1,u=j-1;
if(u&&k&&a[k]==b[u]&&f[i][j]<=f[k][u]+1)
{
f[i][j]=f[k][u]+1;
if(f[i][j]>=res)res=f[i][j],idx=i;
}
}
}
}
cout<<res<<endl;
cout<<a.substr(idx-res+1,res)<<endl;
return 0;
}