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 void CombinationPar(vector<string>& result, string& sample, int deep, 2 int n, int leftNum, int rightNum) 3 { 4 if(deep == 2*n) 5 { 6 result.push_back(sample); 7 return; 8 } 9 if(leftNum<n) 10 { 11 sample.push_back('('); 12 CombinationPar(result, sample, deep+1, n, leftNum+1, rightNum); 13 sample.resize(sample.size()-1); 14 } 15 if(rightNum<leftNum) 16 { 17 sample.push_back(')'); 18 CombinationPar(result, sample, deep+1, n, leftNum, rightNum+1); 19 sample.resize(sample.size()-1); 20 } 21 } 22 23 vector<string> generateParenthesis(int n) { 24 vector<string> result; 25 string sample; 26 if(n!= 0) 27 CombinationPar(result, sample, 0, n, 0, 0); 28 return result; 29 }