Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
107118 李承瀚 单词接龙 C++ 编译错误 0 0 MS 0 KB 1471 2023-10-19 14:03:28

Tests(0/0):


#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; }


测评信息: