首页 > 编程语言 >【leetcode】括号生成 c++回溯法

【leetcode】括号生成 c++回溯法

时间:2024-11-27 11:28:42浏览次数:8  
标签:括号 int backtrack back c++ re vector 回溯 leetcode

22.括号生成 

22. 括号生成 - 力扣(LeetCode)

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8
class Solution {
private:
    void backtrack(vector<string>& re,string& s,int l,int r,int n)
    {
        if(r==n)
        {
            re.push_back(s);
            return;
        }
        if(l<n)//左括号
        {
            s.push_back('(');
            backtrack(re,s,l+1,r,n);
            s.pop_back();
        }
        if(l>r)//右括号
        {
            s.push_back(')');
            backtrack(re,s,l,r+1,n);
            s.pop_back();
        }   
    }
public:
    vector<string> generateParenthesis(int n) {
        vector<string> re;
        string s;
        backtrack(re,s,0,0,n);
        return re;
    }
};

如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。

标签:括号,int,backtrack,back,c++,re,vector,回溯,leetcode
From: https://blog.csdn.net/m0_73805456/article/details/144042865

相关文章

  • C++ 多继承基类析构虚函数
    Demo:classAnimal{public:Animal(){cout<<"animal..."<<endl;}virtual~Animal(){cout<<"~animal..."<<endl;}virtualvoidShowAnimal()=0;};classCa......
  • c++ 程序来计算三角形的面积(Program to find area of a triangle)
    给定一个三角形的边,任务是求出该三角形的面积。例如: 输入:a=5,b=7,c=8输出:三角形面积为17.320508输入:a=3,b=4,c=5输出:三角形面积为6.000000方法:可以使用以下公式简单地计算三角形的面积。其中a、b和c是三角形边长, s=(a+b+c)/2 下面是上......
  • C++异常
    目录1.C语言传统的处理错误的方式2.C++异常概念3.异常的使用1.异常的抛出和捕获2.异常的重新抛出3.异常安全4.异常规范4.自定义异常体系5.C++标准库的异常体系6.异常的优缺点1.C语言传统的处理错误的方式        传统的错误处理机制:终止程序,如assert,缺......
  • 【最新原创毕设】基于Java的面向中职物联网专业教师的课程资源服务平台(免费领源码)可做
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,果园信息统计管理系统的信息通过网络进行信息管理掀起了热潮,所以针对果园信......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设物......
  • 蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、
    别忘了请点个赞+收藏+关注支持一下博主喵!!!! ! ! ! !关注博主,更多蓝桥杯nice题目静待更新:)动态规划三、括号序列【问题描述】        给定一个括号序列,要求尽可能少地添加若干括号使得括号序列变得合法,当添加完成后,会产生不同的添加结果,请问有多少种本质......
  • 【C++习题】14.滑动窗口_找到字符串中所有字母异位词
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:438.找到字符串中所有字母异位词题目描述:解法暴力解法:字母排序后运用滑动窗口解题。滑动窗口+哈希表:我们可以优化一下,比如下面cba到bae,实际上只是把c去掉,加上一个e,没必要三个全删。left=......
  • C++中的NULL和nullptr
    NULL 和 nullptr 都是用于表示空指针的常量,但它们在C++中有一些重要的区别,特别是随着C++11引入了 nullptr 之后,nullptr 成为了更推荐的选择。以下是两者的主要区别:1.类型NULL:在C和C++中,NULL 是一个宏,通常定义为 0(或 (void*)0),它本质上是整数常量。由于它是......
  • C++中单例模式和static的对比
    在编程中,单实例(Singleton)模式和使用 static 变量或方法 都能实现某些程度上的共享状态或限制实例数量,但它们的设计目的、适用场景以及实现方式存在本质区别。1.单实例(Singleton)模式特点:目标:确保一个类在全局范围内只有一个实例,并提供一个访问该实例的全局访问点。控制粒......