#include<bits/stdc++.h>
using namespace std;
const int maxn=100;
int n,ans,used[maxn];
string word[maxn],beginn;
bool check(string s,string m,int k)
{
int lens=s.length();
for(int i=0;i<k;i++)
if(s[lens-k+i]!=m[i])
return false;
return true;
}
void add(string &s,string m,int k)
{
int lenm=m.length();
for(int i=k;i<lenm;i++)
s+=m[i];
}
void dfs(string now)
{
int x=now.length();
ans=max(ans,x);
for(int i=1;i<=n;i++)
{
if(used[i]>=2) continue;
int len=word[i].length();
for(int j=1;j<=len;j++)
if(check(now,word[i],j))
{
string temp=now;
add(temp,word[i],j);
if(temp==now) continue;
used[i]++;
dfs(temp);
used[i]--;
break;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>word[i];
cin>>beginn;
dfs(beginn);
cout<<ans;
}
P1019 单词接龙【洛谷】
猜你喜欢
转载自blog.csdn.net/qq_44622401/article/details/104290562
今日推荐
周排行