blablabla
样例
https://www.luogu.com.cn/problem/P1019
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 50;
string word[N];
int g[N][N];
int n;
int res;
int used[N];
void dfs(string ans,int last)
{
res = max(res,(int)ans.size());
used[last]++;
for(int i = 1;i<=n;i++)
{
if(g[last][i] && used[i]<2)
{
dfs(ans+word[i].substr(g[last][i]),i);//阶段重复的
}
}
used[last]--;
}
int main()
{
cin >> n;
for(int i = 1;i<=n;i++)
{
cin >> word[i];
}
char str;
cin >> str;
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=n;j++)
{
string a = word[i],b = word[j];
for(int k = 1;k<min((int)a.size(),(int)b.size());k++)
{
if(a.substr(a.size()-k,k) == b.substr(0,k))
{
g[i][j] = k;
break;
}
}
}
}
for(int i = 1;i<=n;i++)
{
if(word[i][0] == str)
{
dfs(word[i],i);
}
}
cout << res << endl;
return 0;
}