51 pts,求大佬帮忙看一看
查看原帖
51 pts,求大佬帮忙看一看
842408
pangyuchen75楼主2024/1/27 13:51

提交结果

我的代码:

#include <iostream>
#include <string>
#include <algorithm>
#define N 105
using namespace std;

int n;
string s[N];
string be;
int ans;
int use[N];

string link(string s1, string s2) {
	string s3 = s1;
	int len = -1;
	
	for(int i = 1; i <= min(s1.size(), s2.size()); ++i)
		if(s1.substr(s1.size() - i, i) == s2.substr(0, i))
			len = i;
	
	if(len == -1)
		return "";
	
	return s1 + s2.substr(len, s2.size() - len);
}

void dfs(string dr) {
	if(dr.size() > ans)
		ans = dr.size();
	
	for(int i = 1; i <= n; ++i) {
		if(use[i] == 2)
			continue;
		
		if(link(dr, s[i]) == "")
			continue;
		
		++use[i];
		
		dfs(link(dr, s[i]));
		
		--use[i];
	}
}

int main() {
	cin >> n;
	
	for(int i = 1; i <= n; ++i)
		cin >> s[i];
	
	cin >> be;
	
	dfs(be);
	
	cout << ans << endl;
	
	return 0;
}
2024/1/27 13:51
加载中...