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:
vector<string> ans;
void gen(int lcnt, int rcnt, string s)
{
if(lcnt == 0 && rcnt == 0)
{
ans.push_back(s);
s = "";
}
if(lcnt > 0)
gen(lcnt-1, rcnt, s+"(");
if(rcnt > 0 && rcnt > lcnt)
gen(lcnt, rcnt-1, s+")");
}
vector<string> generateParenthesis(int n)
{
string s = "";
gen(n, n, s);
return ans;
}
};