题目
- Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:1
2
3
4
5
6
7[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
解题思路
- 本题是利用溯源算法去解决的,穷举出每一种可能性,把所有成功的解都返回解空间。
- 本题利用递归和DFS进行解决,其中重点是找到递归的传递关系,在理解递归的时候只需将其理解成一个黑盒子,考虑其中的效果
- 递归的思路
- 回归条件 :
当左右括号加起来等于2n的时候 - 选择条件1:
当左括号的数量小于n的时候 - 递归关系1:
左括号的数量加1 - 选择条件2:
当右括号的数量小于左括号的数量的时候 - 递归关系2:
右括号的数量加1
- 回归条件 :
实现代码
1 | class Solution { |