题目:
数字
n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:
代码分析:
class Solution {
public:
    //进行回溯调用
    vector<string> generateParenthesis(int n) {
        if(n<=0)
        {
            return res;
        }
        gent("",n,n);
        return res;
    }
   //因为是生产括号,所以左括号数量要和右括号数量保持一直,所以这里传递的n要变成个
   //n同时是左括号数同时页是右括号数
   //
    void gent(string str,int left,int right)
    {
        //使用一个str进行括号的存储
        //当左右括号数量都等于0时,表示不需要在生成括号了直接返回
        if(left==0&&right==0)
        {
            res.push_back(str);//直接在vector中插入结果,但是结果可能不是只有一种
            return;
        }
        //如果左括号等于右括号数,那么可以直接插入左括号
        if(left==right)
        {
            gent(str+"(",left-1,right);
        }//如果需要插入的左括号数小于右括号数,那么可以插入左括号也可以插入右括号
        else if(left<right)
        {
            if(left>0){
            gent(str+"(",left-1,right);
            }
            gent(str+")",left,right-1);
        }
    }
private:
    vector<string>res;//创建一个存放 括号多种生成方式的vector容器
}; 
题目来源:22. 括号生成 - 力扣(LeetCode)




















