# coding=utf-8
# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
左括号匹配右括号
dfs
"""
list_re=[]#返回列表
stcak_re=[]#返回栈
stack_sign=[]#识别栈
def dfs(deepth_sign = 0):
if deepth_sign==2*n :
if stack_sign==[]:#深度到2n识别栈空,结果列表加入结果栈
list_re.append(''.join(stcak_re))
else:#递归
stcak_re.append('(')
stack_sign.append('1')
dfs(deepth_sign+1)
stcak_re.pop()
stack_sign.pop()
if stack_sign!=[]:
stcak_re.append(')')
stack_sign.pop()
dfs(deepth_sign + 1)
stcak_re.pop()
stack_sign.append('1')
else:
pass
dfs()
return list_re
a=Solution()
print a.generateParenthesis(4)
很是不错,递归DFS理解又深了一点,这个剪枝我觉得做的还不错