python - 打印平衡括号的所有组合 - 当参数大于 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 的有效解决方案,但我想了解我在这里做错了什么)。
解决方案
推荐阅读
- javascript - 如何存储 HTML 下拉列表(
- electron - 未找到模块:错误:无法解析 'fs' - Electron
- python - UnicodeDecodeError:每行的列中都有应用函数
- php - Swagger Codegen 为每个资源生成一个 api
- google-chrome - Chrome 扩展程序在扩展程序创建的窗口关闭后关闭
- javascript - 如何在挂载组件之前等待 App.js 代码运行?
- java - Mockito:不在测试函数中抛出错误
- node.js - (Puppeteer) 如何拦截 HTTP 请求并用不同的 body 多次发送?
- azure-aks - 如何从 AKS 上的 nginx 入口监控 HTTP 状态代码?
- powershell - 对以下 powershell 脚本进行等效 wql 查询