为什么我没有过??
查看原帖
为什么我没有过??
835115
Miooco楼主2022/10/31 15:48

我下了几次用例,明明和用例是一样的,但就是过不了,有没有大佬解释一下?用python写的,真的搞不懂了

num = int(input())
word = []
wordLen = 0
for i in range(num):
    word.append(input())
begin = input()

dfsFlag = [0 for i in range(num)]
maxLen = ""


def check(a, b):
    flag = False
    lens = -1
    num = min(len(a), len(b))
    for i in range(num):
        if a[-1 - i:] == b[0:1 + i]:
            lens = max(lens, i)
            flag = True
            break
    return flag, lens


def mioDfs(nowStr):
    global maxLen
    for i in range(num):
        if dfsFlag[i] == 2:
            continue
        flag, hc = check(nowStr, word[i])
        if flag:
            nowStr2 = nowStr + word[i][1 + hc:]
            if len(nowStr2) == len(nowStr):
                continue
            else:
                if len(nowStr2) > len(maxLen):
                    maxLen = nowStr2
                dfsFlag[i] += 1
                mioDfs(nowStr2)
                dfsFlag[i] -= 1


mioDfs(begin)
print(len(maxLen))

2022/10/31 15:48
加载中...