【LeetCode】22. 括号生成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fuqiuai/article/details/83419572

题目链接https://leetcode-cn.com/problems/generate-parentheses/description/

题目描述

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 n = 3,生成结果为:

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

解决方法

递归,排列组合的问题

//用递归,排列组合的问题
class Solution {
    vector<string> res;
public:
    vector<string> generateParenthesis(int n) {
        generate(0,0,"",n);
        return res;
    }
private:
    void generate(int left,int right,string s,int n){ //left right分别表示左括号和右括号的个数
        if (right==n) res.push_back(s);
        else{
            if (left<n) generate(left+1,right,s+"(",n);
            if (right<left) generate(left,right+1,s+")",n);
        }
    }
};

猜你喜欢

转载自blog.csdn.net/fuqiuai/article/details/83419572
今日推荐