90分不知道哪里错,求助大佬,奖励关注
  • 板块P2364 胖男孩
  • 楼主Cells
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/28 15:52
  • 上次更新2023/11/3 00:42:35
查看原帖
90分不知道哪里错,求助大佬,奖励关注
556908
Cells楼主2023/8/28 15:52

Link:P2364 胖男孩

错的点

Code:

# include <bits/stdc++.h>
using namespace std;

const int N = 1e2 + 10;

struct node{
	string str;
	int len;
}f[N][N][N];

string x, y, z;

int la, lb, lc;
int a[N], b[N], c[N];

int main(){
	cin >> x >> y >> z;
	
	la = x.size();
	lb = y.size();
	lc = z.size();
	
	for(int i = 1; i <= la; i ++) a[i] = x[i - 1] - 'a';
	for(int i = 1; i <= lb; i ++) b[i] = y[i - 1] - 'a';
	for(int i = 1; i <= lc; i ++) c[i] = z[i - 1] - 'a';
	
	for(int i = 1; i <= la; i ++){
		for(int j = 1; j <= lb; j ++){
			for(int k = 1; k <= lc; k ++){
				if(a[i] == b[j] && c[k] == a[i]){
					if(f[i][j][k].len < f[i - 1][j - 1][k - 1].len + 1){
						f[i][j][k].len = f[i - 1][j - 1][k - 1].len + 1;
						char ch = char(a[i] + 'a');
						f[i][j][k].str = f[i - 1][j - 1][k - 1].str + ch;
					}
				}
				
				else{
					int max_val = 0;
					if(f[i][j][k - 1].len < f[i][j - 1][k].len){
						f[i][j][k].len = f[i][j - 1][k].len;
						f[i][j][k].str = f[i][j - 1][k].str;
						max_val = f[i][j - 1][k].len;
					}
					
					else{
						f[i][j][k].len = f[i][j][k - 1].len;
						f[i][j][k].str = f[i][j][k - 1].str;
						max_val = f[i][j][k - 1].len;
					}
					
					if(max_val < f[i - 1][j][k].len){
						f[i][j][k].len = f[i - 1][j][k].len;
						f[i][j][k].str = f[i - 1][j][k].str;
					}
				}
			}
		}
	}
	
	cout << f[la][lb][lc].str;
	
	return 0;
}
2023/8/28 15:52
加载中...