//网上很多人写的是递归,不过的确这位想的DFS思路更加清晰
//http://blog.csdn.net/yutianzuijin/article/details/13161721
class Solution {
public:vector<string> generateParenthesis(int n) {
vector<string> res;
generate(n,n,"",res);
return res;
}
void generate(int left, int right, string s, vector<string>& res)
{
if(left==0&&right==0)
res.push_back(s);
if(left>0)
generate(left-1,right,s+'(',res);
if(right>left&&right>0)
generate(left,right-1,s+')',res);
}
};