LeetCode 22. 括号生成 C++(回溯法)

  还是用回溯法暴力解题,遍历所有可能,不过还是在此基础上进行了一些的优化,来阻止那些不必要的遍历。好,上代码。

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> result;
        CreatStr( n, result,"",0,0);
        return result;
        
    }
    void CreatStr(int n,vector<string> &result,
            string item,int left ,int right){
                if(left + right ==2 *n && left == right){
                    result.push_back(item);
                }
                if(left < n) CreatStr(n,result,item + '(',left + 1,right);
                if(right < left)CreatStr(n,result,item + ')',left,right + 1);

            }
};

注意,这里的string不要用 & (“引用”)

posted @ 2020-05-12 16:29  clienter  阅读(84)  评论(0)    收藏  举报