class Solution {
public:
void generate(int n,int l,int r,string tmp,vector<string>&ret)
{
if(l==n&&r==n)
{
ret.push_back(tmp);
return;
}
if(l<n)
generate(n,l+1,r,tmp+'(',ret);
if(r<l)
generate(n,l,r+1,tmp+')',ret);
}
vector<string> generateParenthesis(int n) {
string tmp="";
vector<string> ret;
generate(n,0,0,tmp,ret);
return ret;
}
};
public:
void generate(int n,int l,int r,string tmp,vector<string>&ret)
{
if(l==n&&r==n)
{
ret.push_back(tmp);
return;
}
if(l<n)
generate(n,l+1,r,tmp+'(',ret);
if(r<l)
generate(n,l,r+1,tmp+')',ret);
}
vector<string> generateParenthesis(int n) {
string tmp="";
vector<string> ret;
generate(n,0,0,tmp,ret);
return ret;
}
};