Leetcode 22. 括号生成 回溯 C++实现

Leetcode 22.括号生成

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

算法:

创建返回数组 ans ,和临时变量 path

当左括号数量open 小于应填括号数n 时,可以填左括号;当右括号数量 i-open 小于左括号数量 open 时,可以填右括号。递归。

代码:

cpp 复制代码
class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> ans;
        int m = n*2;// 左括号和右括号一共个数
        string path(m,0);// 所有括号长度都是一样的 m
        // 目前已经填了的括号数 i
        // 左括号个数 open,右括号个数 i-open
        auto dfs = [&](auto &&dfs,int i,int open){
            if(i == m){
                ans.emplace_back(path);
                return ;
            }
            // 可以填左括号
            if(open < n){
                path[i] = '(';
                dfs(dfs,i + 1,open + 1);
            }
            // 可以填右括号
            if(i - open < open){
                path[i] = ')';
                dfs(dfs,i + 1,open);
            }
        };
        dfs(dfs,0,0);// 入口
        return ans;
    }
};
相关推荐
Aevget1 分钟前
MFC扩展库BCGControlBar Pro v37.2 - 全新的VS 2026可视化管理器
c++·mfc·bcg·界面控件·ui开发
飞Link11 分钟前
深度解析 MSER 最大稳定极值区域算法
人工智能·opencv·算法·计算机视觉
bubiyoushang88816 分钟前
基于CLEAN算法的杂波抑制Matlab仿真实现
数据结构·算法·matlab
C+-C资深大佬26 分钟前
C++类型判断
开发语言·c++
曾经的三心草30 分钟前
redis-2-数据结构内部编码-单线程-String命令
数据结构·数据库·redis
Yu_Lijing38 分钟前
基于C++的《Head First设计模式》笔记——模式合作
c++·笔记·设计模式
zmzb010342 分钟前
C++课后习题训练记录Day74
开发语言·c++
2401_894828121 小时前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
cdut_suye1 小时前
解锁函数的魔力:Python 中的多值传递、灵活参数与无名之美
java·数据库·c++·人工智能·python·机器学习·热榜
Remember_9931 小时前
【LeetCode精选算法】前缀和专题二
算法·哈希算法·散列表