#对比函数:遍历从k开始的每一个,若相等返回长度,不等-1
def duibi(x,k,y):
s=0
j=0
ss=''
if len(y)<len(x)-k:return -1,ss
for i in range(k,len(x)):
if x[i]==y[j]:
j+=1
else:return -1,ss
while j<len(y):
s+=1
ss+=y[j]
j+=1
return s,ss
#数组:1记录单词n 2记录对应单词次数m
#全局变量记录长度,记录最大长度remax,
remax=0
ress=''
#dfs,
#1遍历单词尾到前,发现等于其他单词开头且次数《=2,则进入对比函数
#返回长度大小,-1则继续,反之以新的字符继续递归
def dfs(x,res,ss):
global remax
for i in range(len(x)-1,0,-1):
for j in range(len(n)):
if m[j]<2 and x[i]==n[j][0]:
le,sss=duibi(x,i,n[j])
if le==-1:
continue
else:
t=ss
ss+=sss
res+=le
m[j]+=1
dfs(n[j],res,ss)
m[j]-=1
res-=le
ss=t
if remax<res:
## print(ss)
remax=res
return
q=int(input())
m=[0]*q
n=[input() for i in range(q)]
a=input()
for i in range(q):
if n[i][0]==a:
m[i]+=1
dfs(n[i],len(n[i]),n[i])
m[i]-=1
print(remax)
测试点1答案15,我的和它一样还是WA