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
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
class
Solution {public: vector<string> generateParenthesis(int
n) { vector<string> re; par(re,"",n,0 , 0); return
re; } void
par(vector<string> &re,string now , int
n ,int
left ,int
right) { if(left == n && right == n) { re.push_back(now); return; } if(left > right) { if(left < n) { par(re,now + ‘(‘
, n ,left+1 ,right); par(re,now + ‘)‘
, n ,left ,right+1); } else
if(left == n) { for(int
i = right ;i < n ; i++) { now+=‘)‘; } re.push_back(now); return; } } else
if(left == right) { par(re,now + ‘(‘
, n ,left+1 ,right); } }}; |
Generate Parentheses,布布扣,bubuko.com
原文:http://www.cnblogs.com/pengyu2003/p/3587690.html