括号生成问题

题目就是给你n=3 然后你就要生成3对括号的有效形式。例如()()()和(()())这种

思路,肯定是递归了。递归每次增加一个左括号一个右括号,就会成为)(()(),所以还要加限制。

这种题,先递归出来,结果多了再用限制去做减法:

n = 3
opt = []
def khsc(ipt):
    if len(ipt) == n*2:
        opt.append(ipt)
        return
    khsc(ipt+'(')
    khsc(ipt+')')
    return
khsc("")
print(opt)

  括号生成问题

 

   这肯定有手就行把,不难。然后得加限制,就是说你左右括号数量要一致,而且你每次生成到第i位的时候,你的左括号数量智能小于等于n(否则数量不对了),右括号无时无刻都不能大于左括号数量。

  搞。加两个参数来记录当前左右括号数量。

n = 3
opt = []
def khsc(ipt,left,right):
    if left>n or right > left:
        return 
    if len(ipt) == n*2:
        opt.append(ipt)
        return
    khsc(ipt+'(',left+1,right)
    khsc(ipt+')',left,right+1)
    return
khsc("",0,0)
print(opt)

  括号生成问题

 

   拆解问题就不难了。

上一篇:防抖函数的实现


下一篇:centos7系统优化