leetcode 22. Generate Parentheses 卡特兰数

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:

[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]

给 n 对括号,生成其所有合法的组合。

class Solution {
public:
    vector<string> v;
    int n;
    vector<string> generateParenthesis(int n){
        int c = 2*n;
        string s = "";
        dfs(n, 0, s, 0, 0);
        return v;
    }
    void dfs(int n, int len, string s, int l, int r){
        if(len==2*n)v.push_back(s);
        if(l<n)dfs(n, len+1, s+'(', l+1, r);
        if(r<l)dfs(n, len+1, s+')', l, r+1);
    }
};
posted @ 2020-06-15 23:09  winechord  阅读(54)  评论(0编辑  收藏  举报