Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
108721 李承瀚 [NOIP2000 普及组/提高组] 单词接龙 C++ 通过 100 0 MS 252 KB 1521 2023-11-04 09:30:52

Tests(6/6):


#include<iostream> #include<cstring> #include<algorithm> using namespace std; int mncc, maxn = 0; struct n { int left = 2, last = 0; char word[101]; }n[22]; int abcd(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 last[], int num) { maxn = max(maxn, num); int a; for (int i = 0; i < mncc; i++) if (n[i].left > 0) { a = abcd(last, n[i].word); if (a != 0) { n[i].left--; dfs(n[i].word, num + n[i].last - a); n[i].left++; } } } int main() { char start; cin >> mncc; for (int i = 0; i < mncc; i++) { cin >> n[i].word; n[i].last = strlen(n[i].word); } cin >> start; for (int i = 0; i < mncc; i++) if (n[i].word[0] == start) { n[i].left--; dfs(n[i].word, n[i].last); n[i].left++; } cout << maxn << endl; return 0; }


测评信息: