就这一行tim>=10000是怎么计算出来的呢?
能详细说明一下为什么tim>=10000之后不是最优解吗
//dfs瞎搞
#include<bits/stdc++.h>
using namespace std;
string str;
int ans,n,tim;
struct node{
int s,t,w;//用结构体存开头字母,结尾字母,长度
}a[20];
int vis[20];
void dfs(int last,int len)//sum表示现在长度,last表示当前串的尾字母
{
tim++;
if(tim>=10000)//这一行玄学
{
cout<<ans;
exit(0);
}
ans=max(ans,len);
for(int i=1;i<=n;i++)
{
if(!vis[i]&&(a[i].s==last||last==-1))
{
vis[i]=1;
dfs(a[i].t,len+a[i].w);
vis[i]=0;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str;
a[i].s=str[0]-'A';
a[i].t=str[str.size()-1]-'A';
a[i].w=str.size();//串长
}
dfs(-1,0);
cout<<ans;
return 0;
}