其他分享
首页 > 其他分享> > 括号生成问题

括号生成问题

作者:互联网

题目就是给你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)

  

 

   拆解问题就不难了。

标签:opt,return,生成,问题,括号,ipt,left,khsc
来源: https://www.cnblogs.com/snailbuster/p/15038071.html