Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
173722 | 周子隽 | 单词接龙 | C++ | 通过 | 100 | 0 MS | 248 KB | 1449 | 2024-08-21 08:24:25 |
#include<iostream> using namespace std; int n,used[30],res; string s[30]; char sta; bool exist(string word,string b) { // cout<<"exist:"<<word<<" "<<b<<endl; int fin; for(int i=1; i<word.size(); i++) { string str=word.substr(word.size()-i,i); fin=b.find(str); if(fin==0) return true; } return false; } string hebin(string a,string b) { // cout<<"hebin:"<<a<<" "<<b<<endl; int fin,len=0; do { len++; string str=a.substr(a.size()-len,len); // cout<<len<<" "<<str<<endl; fin=b.find(str); }while(fin!=0); string str=a.substr(0,a.size()-len); return str+b ; } void dfs(string tar,string last) { // cout<<tar<<" "<<last<<endl; bool can=false; for(int i=1; i<=n; i++) if(used[i]<2&&exist(last,s[i])) { can=true; used[i]++; dfs(hebin(tar,s[i]),s[i]); used[i]--; } if(!can) { int len=tar.size(); res=std::max(res,len); // cout<<tar<<endl; } } int main() { cin>>n; for(int i=1; i<=n; i++) cin>>s[i]; cin>>sta; for(int i=1; i<=n; i++) { if(s[i][0]==sta) { used[i]++; dfs(s[i],s[i]); used[i]--; } } cout<<res<<endl; // cout<<hebin(s[1],s[1])<<endl; return 0; }