backtracking: 22. Generate Parentheses

来源:互联网 发布:pip安装tensorflow 编辑:程序博客网 时间:2024/05/23 12:18

  • 法一
  • 法二

法一:

class Solution {public:    char p[2] = {'(', ')'};    int half;    void Generate_Parentheses(vector<string> &rel, int stt, int left, int right, int n, string tmp) {        if(stt == n) {            if(left == half)                rel.push_back(tmp);            return;            }        for(int i = 0; i < 2; i++) {            tmp += p[i];            if((left + 1 >= right + 2*i) && (left + 1 - i <= half))                 Generate_Parentheses(rel, stt + 1, left + 1 - i, right + i, n, tmp);            tmp.pop_back();        }    }    vector<string> generateParenthesis(int n) {        vector<string> rel;        string tmp;        half = n;        Generate_Parentheses(rel, 0, 0, 0, n << 1, tmp);        return rel;    }};

法二:

class Solution {public:    vector<string> generateParenthesis(int n) {        vector<string> res;        string sol;        genParen(sol, 0, 0, n, res);        return res;    }private:    void genParen(string& sol, int open, int close, int total, vector<string>& res) {        if (open == total && close == total) {            res.push_back(sol);            return;        }        if (open < total) {            sol += '(';            genParen(sol, open + 1, close, total, res);            sol.resize(sol.length() - 1);        }        if (close < open) {            sol += ')';            genParen(sol, open, close + 1, total, res);            sol.resize(sol.length() - 1);        }    }};
1 0
原创粉丝点击