Advertisement
jinhuang1102

22. Generate Parentheses

Apr 12th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. """
  2. 这道题是backtrack的一道题。这道题要我们 generate all 所以一改就是递归做法。因为给的是 n pairs 所以左右括号应该各有 n 个。
  3. 我们用 l 来表示左括号的剩余个数,r 来表示或括号的剩余个数。 在递归中,如果 "(" 的剩余 > ")" 的剩余说明这是出现了不正确的解,return.
  4. 如果,l == r == 0 说明所有的括号动用完了,并且得到的是正确的解,把当前的解,append到res中。
  5. 如果以上两种都不符合:如果 l > 0, 递归求解,注意跟新参数。如果 r > 0, 递归求解。
  6. """
  7.  
  8. def backtrack(l, r, out, res):
  9.     print(out)
  10.     if l > r:
  11.         return
  12.  
  13.     if l == 0 and r == 0:
  14.         res.append(out)
  15.         print("#####")
  16.         return
  17.  
  18.     if l > 0:
  19.         backtrack(l-1, r, out+"(", res)
  20.  
  21.     if r > 0:
  22.         backtrack(l, r-1, out+")", res)
  23.  
  24.  
  25. def generateParenthesis(n):
  26.     res = []
  27.     backtrack(n, n, "", res)
  28.     return res
  29.  
  30. res = generateParenthesis(3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement