社区讨论
求助,数据在本地AC提交WA
P1019[NOIP 2000 提高组] 单词接龙(疑似错题)参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m3s27b6o
- 此快照首次捕获于
- 2024/11/22 09:25 去年
- 此快照最后确认于
- 2025/11/04 14:13 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n, a[21][21], vis[21], ans;
string s[21];
char ch;
int calc(int x, int y) {
int len = min(s[x].size(), s[y].size())-1, mx = 0;
for(int i = 1;i <= len;++i) {
string s1 = s[x].substr(s[x].size()-i, i);
string s2 = s[y].substr(0, i);
if(s1 == s2) mx = i;
}
return mx;
}
void dfs(int id, int len) {
for(int i = 1;i <= n;++i) {
if(vis[i] && a[id][i]) {
--vis[i];
dfs(i, len+s[i].size()-a[id][i]);
++vis[i];
}
}
ans = max(ans, len);
return;
}
int main () {
scanf("%d", &n);
for(int i = 1;i <= n;++i) cin >> s[i];
for(int i = 1;i <= n;++i)
for(int j = 1;j <= n;++j)
a[i][j] = calc(i, j);
getchar();
scanf("%c", &ch);
for(int i = 1;i <= n;++i)
if(s[i][0] == ch) {
fill(vis+1, vis+n+1, 2), vis[i] = 1;
dfs(i, s[i].size());
}
printf("%d", ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...