P1019 [NOIP 2000 提高组] 单词接龙
#include<iostream>
using namespace std;
int n,ans,ct[22];
string str[22];
void dfs(string s){
int ls=s.size();
ans=max(ls,ans);
for(int i=1;i<=n;i++){
if(ct[i]==2) continue;
int lstr=str[i].size();
for(int j=1;j<ls&&j<lstr;j++){
string w=str[i];
if(s.substr(ls-j,ls)==str[i].substr(0,j)){
ct[i]++;
dfs(s+str[i].substr(j,lstr));
ct[i]--;
break;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>str[i];
char star; getchar(); cin>>star;
// scanf("%c",&star); 用这个全wa
for(int i=1;i<=n;i++){
if(str[i][0]==star)
ct[i]++,dfs(str[i]);
}
printf("%d",ans);
return 0;
}