class Solution {
public:
vector<string> generateParenthesis(int n)
{
vector<string> result;
if(n > 0)
dfs(result,"",n,n);
return result;
}
void dfs(vector<string> &result,string cur,int left,int right)
{
if(left==0 && right ==0)
result.push_back(cur);
if(left > 0)
dfs(result,cur+"(",left-1,right);
if(left<right && right>0)
dfs(result,cur+")",left,right-1);
}
};
参考了 http://www.shangxueba.com/jingyan/1837405.html