P1019代码求调 单词接龙
查看原帖
P1019代码求调 单词接龙
461366
封禁用户楼主2022/3/24 16:20

看上去挺不错的,但是实际上样例都过不去。。。

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

typedef long long lli;
typedef pair<int, int> pii;
#define m_p make_pair
#define INF 2147483647
#define INFL 9223372036854775807LL

int n;
string words[30];
int link[30][30];
int use[30];

int dfs(int i, int len) {
	if (use[i] == 2) return len;
	use[i]++;
	int ret = 0;
	for (int j = 0; j < n; j++)
		if (link[i][j])
			ret = max(ret, dfs(j, words[i].size() + words[j].size() - link[i][j]));
	use[i]--;
	return ret;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> n;
	for (int i = 0; i < n; i++) cin >> words[i];
	char start;
	cin >> start;
	
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			for (int k = 0; k < min(words[i].size(), words[j].size()) - 1; k++)
				if (words[i].substr(words[i].size() - k - 1) == words[j].substr(0, k + 1)) {
					link[i][j] = k + 1;
					break;
				}
	
	int ans = 0;
	for (int i = 0; i < n; i++)
		if (words[i][0] == start)
			ans = max(ans, dfs(i, 0));
			
	cout << ans << endl;
}

2022/3/24 16:20
加载中...