LeetCode OJ - Generate Parentheses

来源:互联网 发布:淘宝保证金在哪里退 编辑:程序博客网 时间:2024/05/20 00:14

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

"((()))", "(()())", "(())()", "()(())", "()()()"


分析:递归的逻辑是树,画出图形并剪枝,算法就比较好些。

class Solution {    vector<string> ret;    int N;public:    vector<string> generateParenthesis(int n) {        if(n == 0) return ret;                N = n;        DFS(0, 0, "");        return ret;    }        void DFS(int left, int right, string item) {        if(right > left || left > N || right > N) return;                if(left == N && right == N) {            ret.push_back(item);            return ;        }                DFS(left + 1, right, item + "(");        DFS(left, right + 1, item + ")");    }};

class Solution {    vector<string> ret;    int N;public:    vector<string> generateParenthesis(int n) {        if(n == 0) return ret;                N = n;        DFS(0, 0, "");        return ret;    }        void DFS(int left, int right, string item) {        if(right > left || left > N || right > N) return;                if(left == N && right == N) {            ret.push_back(item);            return ;        }                item += "(";        DFS(left + 1, right, item);            item.erase(item.size() - 1);        item += ")";        DFS(left, right+1, item);    }};






0 0
原创粉丝点击