用递归的记忆化搜索枚举出n组括号的情况
class Solution(object):
dp=[]
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
while(n>=len(self.dp)):self.dp.append(-1)
if self.dp[n]!=-1:return self.dp[n]
if n==0 :
self.dp[0]=[]
return []
if n==1 :
self.dp[1]=["()"]
return ["()"]
ans=set()
for i in range(1,n):
t1=self.generateParenthesis(i)
t2=self.generateParenthesis(n-i)
for j in t1:
for k in t2:
ans.add(j+k)
t3=self.generateParenthesis(n-1)
for j in t3:
ans.add("("+j+")")
self.dp[n]=list(ans)
return self.dp[n]