问题标题: 谁说话就采纳谁

0
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


0
我要回答