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