class Solution {
public:
vector<string> generateParenthesis(int n)
{
vector<string> ans;
if (n>0)
generator(ans, "", 0, 0, n);
return ans;
}
void generator(vector<string> & ans, string s, int left, int right, int n)
{ // r/l: appearance of ) (
if (left == n)
{
ans.push_back(s.append(n-right, ')'));
return;
}
generator(ans, s+'(', left+1, right, n);
if (left>right)
generator(ans, s+")", left, right+1, n);
}
};
递归