class Solution {
public:
void dfs(vector<string>&ans,string&temp,int n,int l,int r)
{
if(l+r==n)
{
if(l==r)ans.push_back(temp);
return;
}
if(l==r)
{
temp.push_back('(');
dfs(ans,temp,n,l+1,r);
temp.pop_back();
}
else
{
temp.push_back('(');
dfs(ans,temp,n,l+1,r);
temp.pop_back();
temp.push_back(')');
dfs(ans,temp,n,l,r+1);
temp.pop_back();
}
}
vector<string> generateParenthesis(int n) {
vector<string>ans;
string temp="";
dfs(ans,temp,2*n,0,0);
return ans;
}
};

京公网安备 11010502036488号