首页 > 解决方案 > 打印平衡括号的所有组合 - 当参数大于 4 时丢失案例

问题描述

我一直在尝试解决标题中的问题一段时间,我想出了以下代码:

def parenthesize(lst, num):
    if num == 1:
        lst.append('()')
        return lst
    a1 = []
    a2 = []
    a = parenthesize(a1, num - 1)
    b = parenthesize(a2, num - 1)
    for i in range(len(a)):
        a[i] = '(' + a[i] + ')'
    for i in range(len(b)):
        tmp = b[i]
        b[i] = tmp + '()'
        tmp = '()' + tmp
        if tmp not in b:
            b.append(tmp)
    for i in a:
        lst.append(i)
    for i in b:
        lst.append(i)
    return lst

if __name__ == '__main__':
    lst = []
    n=5
    res = parenthesize(lst, n)
    print(res)
    print(len(res))

现在,当 n 等于或大于 5 时,我错过了一些情况(例如:当 n 为 5 时,它打印 40 对而不是 42,并且差异随着 n 的增长呈指数增长)。我一直无法意识到为什么会发生这种情况,或者我错过了哪些案例。(我有一个来自 GfG 的有效解决方案,但我想了解我在这里做错了什么)。

标签: python

解决方案


推荐阅读