Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
108718 李树强 [NOIP2000 普及组/提高组] 单词接龙 C++ 解答错误 0 14 MS 252 KB 972 2023-11-04 09:28:41

Tests(0/6):


#include<iostream> #include<vector> #include<string> #include<stdio.h> using namespace std; const int N = 30, inf = -1e9; int a[N], n, ans = inf, _len = 1; bool b[N]; char sh; string s[N]; vector<int> vec; void f(int x){ if(x == n){ int cnt = _len; if(s[vec[0]][0] == sh) cnt--; for(int i = 0; i < vec.size() - 2; i++){ for(int j = min(s[vec[i]].size(), s[vec[i+1]].size()) - 1; j >= 0; j--){ if(s[vec[i]].substr(s[vec[i]].size() - j, j) == s[vec[i+1]].substr(0, j)){ cnt -= j; break; } } } ans = max(cnt, ans); return; } for(int i = 0; i < n; i++){ if(!b[i]){ b[i] = true; a[x] = i; vec.push_back(i); f(x + 1); vec.pop_back(); b[i] = false; } } } int main(){ // freopen("chain.in", "r", stdin); // freopen("chain.out", "w", stdout); cin >> n; for(int i = 0; i < n; i++){ cin >> s[i]; _len += s[i].size(); } cin >> sh; f(0); cout << ans; return 0; }


测评信息: