给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
回溯
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
#给好顺序上
#给上left和right,right>left时给右括号。其余时候加左括号
#在数量到2n时停止
res=[]
def get_one(one,left=0,right=0):
if len(one)==2*n :
#就这块2n没想到
res.append(one)
return
if left<n:
get_one(one+'(',left+1,right)
#if (all_left !=0 and left>=(n-right)):
if left>right:
get_one(one+')',left,right+1)
get_one('',0,0)
return res
闭合数/动态规划(待续)