Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
179881 | 刘睿甫 | 单词接龙 | C++ | 通过 | 100 | 0 MS | 248 KB | 726 | 2024-08-21 12:54:34 |
#include <bits/stdc++.h> using namespace std; int n,ans; char m; int b[25]; string a[25]; int check(string s,string t){ int v=0; for(int i=0;i<s.size();i++){ int k=i,j; for(j=0;k<s.size()&&j<t.size();j++,k++){ if(s[k]!=t[j])break; } if(k==s.size())v=k-i; } return v; } void dfs(int l,int x){ ans=max(ans,l); for(int i=1;i<=n;i++){ if(b[i]<2){ int y=check(a[x],a[i]); if(y==0)continue; b[i]++; dfs(l+a[i].size()-y,i); b[i]--; } } } int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>m; for(int i=1;i<=n;i++){ if(a[i][0]==m){ b[i]++; dfs(a[i].size(),i); b[i]--; } } cout<<ans; }