我的dfs左看右看也看不出啥问题啊!!! 难绷。。。
#include <bits/stdc++.h>
using namespace std;
int n,maxn=-114514;
string s[20];
bool b[20];
int A[20],size[20];//如果搜到A[i],且A[i]!=0直接返回A[i]
int dfs(int now,int sum){
if(A[now]!=0)return A[now];
int maxm=-1;
sum+=size[now];
for (int i=1;i<=n;i++){
if(b[i]==true){
continue;
}
if(s[now][size[i]-1]!=s[i][0])continue;
if(A[i]!=0){
maxm=max(maxm,A[i]);
continue;
}
b[i]=true;
maxm=max(dfs(i,sum),maxm);
b[i]=false;
}
if(maxm==-1){
return sum;
}
return maxm+sum;
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
cin>>s[i];
size[i]=s[i].size();
}
for (int i=1;i<=n;i++){
memset(b,false,sizeof(b));
b[i]=true;
if(A[i]==0)A[i]=dfs(i,0);
}
for (int i=1;i<=n;i++){
maxn=max(maxn,A[i]);
}
cout<<maxn;
return 0;
}
求大佬指正 我是大大的蒟蒻