Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
108759 | 赵德明 | [NOIP2000 普及组/提高组] 单词接龙 | C++ | 解答错误 | 0 | 0 MS | 248 KB | 959 | 2023-11-04 10:29:51 |
#include<bits/stdc++.h> using namespace std; int n,msum=0,b[105]; string a[105]; char f; void dfs(int t,int sum){ int alen; if(t==1){ for(int i=1;i<=n;i++){ if(a[i][0]==f){ alen=a[i].size(); sum+=alen; b[i]=0; dfs(i,sum); b[i]=1; } } } else{ alen=a[t].size(); int blen; bool boo=1; for(int i=1;i<=n;i++){ blen=a[i].size(); if(b[i]==1){ int j=1; bool sb=0; for(;j<=min(alen,blen);j++){ for(int z=1;z<=j;z++){ if(a[i][z-1]==a[t][alen-z]); else{ break; sb=1; } } if(sb){ break; } } if(j-1>0){ boo=0; b[i]=0; dfs(i,sum+blen-j+1); b[i]=1; } } } if(boo){ msum=max(msum,sum); return ; } } } int main(){ for(int i=0;i<105;i++){ b[i]=1; } cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>f; dfs(0,0); cout<<msum; return 0; }