Generate Parentheses

来源:互联网 发布:访客网络影响网速吗 编辑:程序博客网 时间:2024/06/05 09:52

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:

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


Solution:

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


0 0
原创粉丝点击