DFS之搜索顺序:1117
作者:
总打瞌睡的天天啊
,
2024-10-21 20:45:41
,
所有人可见
,
阅读 3
#include<iostream>
#include<algorithm>
using namespace std;
const int N=22;
string s[N];
int st[N];
int n;
int ans;
void dfs(string x,int y)
{
st[y]++;
int len=x.size();
ans=max(ans,len);//更新答案
string t;
for(int i=0;i<n;i++)
for(int j=len-1,k=1;j>0&&k<s[i].size();j--,k++)//判断字符串常用方法
{
if(st[i]<2&&x.substr(j)==s[i].substr(0,k))
{
t=x.substr(0,len-k)+s[i];
dfs(t,i);
}
}
st[y]--;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)cin>>s[i];
string begin;
cin>>begin;
begin=' '+begin;
dfs(begin,n);
cout<<ans-1;
return 0;
}