【LeetCode热题100】【回溯】括号生成

题目链接:22. 括号生成 - 力扣(LeetCode)

给n对括号找出所有有效组合,首先常规深度遍历回溯能得到所有组合,然后我们来看什么样的组合是有效的,什么样的组合是无效的,采用尾插的字符拼接,因此无论何时)的数量不能超过(,当(和)的数量都得到了n,说明这个组合完成了

复制代码
class Solution {
public:
    vector<string> ans;

    void dfs(string an, int left, int right) {
        if (left < 0 || left > right)
            return;
        if (left == 0 && right == 0) {
            ans.push_back(std::move(an));
            return;
        }
        dfs(an + '(', left - 1, right);
        dfs(an + ')', left, right);
    }

    vector<string> generateParenthesis(int n) {
        dfs("", n, n);
        return ans;
    }
};
相关推荐
不知名的老吴7 小时前
二叉树的遍历算法之先序遍历
算法
liu****7 小时前
第16届国赛蓝桥杯大赛C/C++大学B组
c语言·数据结构·c++·算法·蓝桥杯
SimpleLearingAI7 小时前
大模型推理框架总结解析
算法
Σίσυφος19007 小时前
正则化数据并校准数据
人工智能·算法·机器学习
HZ·湘怡7 小时前
基于动态数组的栈(顺序栈)01
数据结构·算法
Chen_harmony7 小时前
十八、C语言内存函数
c语言·算法
__Coffee__8 小时前
封装矩阵结构体
线性代数·算法·矩阵
变量未定义~8 小时前
字符串哈希匹配字符串
数据结构·算法·哈希算法
周末也要写八哥8 小时前
浅谈二叉树的深度优先搜索(DFS)算法
算法·深度优先
y = xⁿ8 小时前
20天速通LeetCodeday17:一维动态规划
算法