Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
138813 蒋沛霖 单词接龙 C++ 编译错误 0 0 MS 0 KB 1271 2024-03-19 13:26:47

Tests(0/0):


#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int ans,n; string a[21]; int eachTime[21]; char begin; bool ok(string s1,string s2) { for(int i=1;i<min(s1.length(),s2.length());i++) { if(s1.substr(s1.length()-i,i)==s2.substr(0,i)) { return true; } } return false; } string merge(string s1,string s2) { for(int i=1;i<s1.length();i++) { if(s1.substr(s1.length()-i,i)==s2.substr(0,i)) { return s1.substr(0,s1.length()-i).append(s2); } } } void search(string s,int foot) { for(int i=1;i<=n;i++) { if(eachTime[i]<2&&ok(s,a[i])) { eachTime[i]++; string down=merge(s,a[i]); search(down,down.length()); eachTime[i]--; } } ans=max(ans,foot); return; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } cin>>begin; for(int i=1;i<=n;i++) { if(a[i][0]==begin) { eachTime[i]++; search(a[i],a[i].length()); eachTime[i]--; } } cout<<ans; return 0; }


测评信息: