Leetcode典型题解答和分析、归纳和汇总——T22(括号生成)

题目描述:

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

题目解析:

本题可以采用递归方法来求解。

递归的基本要素是:【1】要有递归关系式;【2】给出递归的初始条件和终止条件

class Solution{
    public:
    //定义递归函数
    void getRes(string str, int left, int right, vector<string>& res)
    {
        if(left==0&&right==0) res.push_back(str);  //递归的终止条件
        if(left>0) getRes(str+"(",l-1,r+1,res);  //当左边括号数>0,则加入左括号,然后l-1,r+1处理
        if(right>0) getRes(str+")",l,r-1,res);  //当右边大于0时,l保持不变,右边插入“)”,并r-1
    }
    
    
    vector<string> generateParenthesis(int n){
        vector<string> res; //用来保存结果
        getRes("",n,0,res);  //递归调用函数
        return res;
    }
};
发布了56 篇原创文章 · 获赞 7 · 访问量 4487

猜你喜欢

转载自blog.csdn.net/weixin_44504987/article/details/104318927