#include<iostream>
#include<string>
using namespace std;
int n;
string ss[30];
int yc[30][30];
int vis[30];
int mt(int x,int y){
bool flag=true;
int ky=0;
for(unsigned int k=ss[x].size()-1;k>=0;k--){
for(unsigned int kx=k;kx<ss[x].size();++kx){
if(ss[x][kx]!=ss[y][ky++]){
flag=false;
break;
}
}
if(flag){
return ss[x].size()-k;
}
ky=0;
flag=true;
}
return 0;
}
char ch;
int ans=-1,maxn=0;
void dfs(int id){
bool flag=false;
for(int i=1;i<=n;i++){
if((vis[i]>=2) || (yc[id][i]==0) || (yc[id][i]==ss[i].size())) continue;
maxn+=ss[i].size()-yc[id][i];
++vis[i];
flag=true;
dfs(i);
maxn-=ss[i].size()-yc[id][i];
--vis[i];
}
if(flag==false){
ans=max(ans,maxn);
}
}
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> ss[i];
}
cin >> ch;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
yc[i][j]=mt(i,j);
}
}
for(int i=1;i<=n;i++){
if(ss[i][0]==ch){
++vis[i];
maxn=ss[i].size();
dfs(i);
vis[i]=0;
}
}
cout << ans;
return 0;
}
最开始的代码全WA,照着第一篇题解改后还是1TLE1WA,是哪里出了问题?(在下午回复,现在去吃午饭)