Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ret = []
# @functools.lru_cache(None)
def dfs(curr, l, r):
if l == n and r == n:
ret.append(curr)
if r > l: return
if l < n: dfs(curr + "(", l + 1, r)
if r < n: dfs(curr + ")", l, r + 1)
dfs('', 0, 0)
return ret