1. 题目:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3
输出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
2. 代码:
DFS回溯
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if n==0:
return ['']
if n==1:
return ['()']
# n1,n2 分别为 '(' , ')'个数
def DFS(res,path,n1,n2):
if n1+n2 == 2*n:
print(path[:],n1,n2)
res.append(path[:])
return
if n1<n:
path = path +'('
DFS(res,path,n1+1,n2)
path = path[:-1]
if n2<n and n1>n2:
path = path +')'
DFS(res,path,n1,n2+1)
path = path[:-1]
res = []
path = '('
DFS(res,path,1,0)
return res