#include <bits/stdc++.h>
using namespace std;
char a[25][20];
int f[25];
char str[200];
char chx;
int n, lenn, maxn;
int find(int k)
{
//先找首字母 再比对 最后返回长度
for (int i = strlen(str) - 1; i >= 0; i--)
{
if (str[i] == a[k][0])
{
bool b = 1;
for (int j = i; j <= strlen(str) - 1; j++)
if (str[j] != a[k][j - i])
{
b = 0;break;
}
if (b)
return strlen(str) - i;
}
}
return -1;
}
void work()
{
for (int i = 0; i < n; i++)
{
if (f[i] < 2) //首先使用次数
{
//其次是否可以拼
int len=find(i);
if (len>0)
{
int lenstr = strlen(str);
f[i]++;
strcat(str, &a[i][len - 1]);
work();
f[i]--;
strcpy(str +lenstr , "");
}
}
}
lenn = strlen(str);
maxn = max(maxn, lenn);
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cin >> chx;
for (int i = 0; i < n; i++)
{
if (a[i][0] == chx)
{
f[i]++;
strcpy(str, a[i]);
work();
strcpy(str, "");
f[i]--;
}
}
cout << maxn;
return 0;
}
https://www.luogu.com.cn/problem/P1019
int len=find(i);?