```cpp
#include<bits/stdc++.h>
using namespace std;
char a[25][40000];
int len[25];
char b[3];
int mi[25][25];
int v[25];
int ans=0,an=0,n;
int dfs(int x){
v[x]++;
an+=len[x];
bool f=true;
for(int i=0;i<n;i++){
if(mi[x][i]!=0&&v[i]<2){
an-=mi[x][i];
f=false;
dfs(i);
an+=mi[x][i];
}
}
if(f){
ans=max(an,ans);
}
v[x]--;
an-=len[x];
return 0;
}
int main(){
char h;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",&a[i]);
while(a[i][len[i]]!='\0'){
len[i]++;
}
}
scanf("%c",&h);
scanf("%c",&h);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=len[i]-1;k>0;k--){
if(a[i][k]==a[j][0]){
bool f=true;
for(int k1=k+1;k1<len[i];k1++){
if(a[i][k1]!=a[j][k1-k]){
f=false;
break;
}
}
if(f&&(len[i]-k)!=len[j]){
mi[i][j]=len[i]-k;
k=0;
}
}
}
}
}
for(int i=0;i<n;i++){
if(a[i][0]==h){
dfs(i);
}
}
printf("%d",ans);
return 0;
}
```
by rtyuei @ 2018-05-31 21:37:18
什么错误信息?
by Nero_Claudius @ 2018-05-31 22:11:51
WA
by rtyuei @ 2018-05-31 22:18:46
@[DARTH_VADER](/space/show?uid=38859) WA评测输出0
by rtyuei @ 2018-05-31 22:19:15
输入部分有问题
```
#include<bits/stdc++.h>
using namespace std;
char a[25][40000];
int len[25];
char b[3];
int mi[25][25];
int v[25];
int ans=0,an=0,n;
int dfs(int x){
v[x]++;
an+=len[x];
bool f=true;
for(int i=0;i<n;i++){
if(mi[x][i]!=0&&v[i]<2){
an-=mi[x][i];
f=false;
dfs(i);
an+=mi[x][i];
}
}
if(f){
ans=max(an,ans);
}
v[x]--;
an-=len[x];
return 0;
}
int main(){
char h;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",&a[i]);
while(a[i][len[i]]!='\0'){
len[i]++;
}
}
scanf("\n");
scanf("%c",&h);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=len[i]-1;k>0;k--){
if(a[i][k]==a[j][0]){
bool f=true;
for(int k1=k+1;k1<len[i];k1++){
if(a[i][k1]!=a[j][k1-k]){
f=false;
break;
}
}
if(f&&(len[i]-k)!=len[j]){
mi[i][j]=len[i]-k;
k=0;
}
}
}
}
}
for(int i=0;i<n;i++){
if(a[i][0]==h){
dfs(i);
}
}
printf("%d",ans);
return 0;
}
```
scanf("\n");
scanf("%c",&h);
by rtyuei @ 2018-05-31 22:26:22
可以试一下洛谷IDE, 因为在windows下有很多小错误被和谐掉了
by LPA20020220 @ 2018-05-31 23:38:56