0
已解决
包涵宇
中级天翼
中级天翼
#include<iostream>
using namespace std;
string a,b;
int f[1005][1005],g[1005][1005];
void print(int x,int y){
if(x==0||y==0)
return ;
if(g[x][y]==1){
print(x-1,y-1);
cout<<b[y];
}
else if(g[x][y]==2)
print(x-1,y);
else
print(x,y-1);
}
int main(){
getline(cin,a);
getline(cin,b);
int m=a.length(),n=b.length();
a=" "+a;
b=" "+b;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(a[i]==b[j]){
f[i][j]=f[i-1][j-1]+1;
g[i][j]=1;
}
else if(f[i-1][j]>=f[i][j-1]){
f[i][j]=f[i-1][j];
g[i][j]=2;
}
else{
f[i][j]=f[i][j-1];
g[i][j]=3;
}
print(m,n);
return 0;
}
注:最长公共子序列
为什么80???
包涵宇在2020-09-29 20:57:59追加了内容
行行行,你们谁先说句话,我采纳谁
包涵宇在2020-09-30 16:47:27追加了内容
1