Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
107118 | 李承瀚 | 单词接龙 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 1471 | 2023-10-19 14:03:28 |
#include<iostream> #include<cstring> #include<algorithm> using namespace std; int stf, maxn = 0; struct b { int left = 2, a = 0; char d[101]; }b[22]; int c(char a[], char b[]) { int al = strlen(a), bl = strlen(b), j; bool flag = true; for (int i = 1; i < al && i < bl; i++) { flag = true; for (j = 0; j < i; j++) if (a[al - i + j] != b[j]) { flag = false; break; } if (flag) return i; } return 0; } void dfs(char a[], int num) { maxn = max(maxn, num); int a; for (int i = 0; i < stf; i++) if (b[i].left > 0) { a = c(a, b[i].d); if (a != 0) { b[i].left--; dfs(b[i].d, num + b[i].a - a); b[i].left++; } } } int main() { char start; cin >> stf; for (int i = 0; i < stf; i++) { cin >> b[i].d; b[i].a = strlen(b[i].d); } cin >> start; for (int i = 0; i < stf; i++) if (b[i].d[0] == start) { b[i].left--; dfs(b[i].d, b[i].a); b[i].left++; } cout << maxn << endl; return 0; }