https://www.cnblogs.com/grandyang/p/4444160.html
相当于一个全排列,但是通过left、right控制个数,并且不符合要求的括号排列用left > right来控制了,让他不再递归,这样就不可能满足left == 0 ,right == 0,就不可能push进result中。
并且left > 0 和 right >0 也控制了可能性
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> res; generate(n,n,"",res); return res; } void generate(int left,int right,string input,vector<string> &res){ if(left > right) return; if(left == 0 && right == 0) res.push_back(input); if(left > 0) generate(left-1,right,input + "(",res); if(right > 0) generate(left,right-1,input + ")",res); } };