22. Generate Parentheses

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);
    }
};

 

posted @ 2019-03-12 18:30  有梦就要去实现他  阅读(90)  评论(0编辑  收藏  举报