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:
"((()))", "(()())", "(())()", "()(())", "()()()"
class Solution {
public:
void generateParenthesis(vector<string>& result, string& s,int left,int right){
if(left==0&&right==0){
result.push_back(s);
return;
}
if(left==0){
s.push_back(')');
generateParenthesis(result,s,left,right-1);
s.pop_back();
}else if(left==right){
s.push_back('(');
generateParenthesis(result,s,left-1,right);
s.pop_back();
}else{
s.push_back('(');
generateParenthesis(result,s,left-1,right);
s.pop_back();
s.push_back(')');
generateParenthesis(result,s,left,right-1);
s.pop_back();
}
}
vector<string> generateParenthesis(int n) {
vector<string> result;
if(n<=0){
return result;
}
string s;
generateParenthesis(result,s,n,n);
return result;
}
};