leetcode 22. 括号生成

题目如下

复制代码
因为题目中的括号只有一种组成括号的只有"("和")"故我们可以通过暴力搜索出答案("("和")"一样都只有两种状态放与不放且我们是从左到右生成的)。
那么,如何保证暴力搜索出的字符串是正确的括号对呢?
在回答这个问题之前我们来思考不正确的括号对是如何生成的吧
显然按照我们的生成方案当右括号多于左括号时括号对不正确。
所以我们通过数量限制来解决这些不正确的情况。

通过代码

cpp 复制代码
class Solution {
public:
void back(vector<string> &ans,int n,int left,int right,string s) {
    if(left + right == n * 2) {
        ans.push_back(s);
        return;
    }
    if(left < n) {
        back(ans,n,left + 1,right,s + "(");
    }
    if(right < left) {
        back(ans,n,left,right + 1,s + ")");
    }
}
vector<string> generateParenthesis(int n) {
        vector<string> ans;
        back(ans,n,0,0,"");
        return ans;
}

};
相关推荐
老余捞鱼12 小时前
线性回归实战:5步验证你的量化因子是否真有效
算法·金融·回归·线性回归·ai量化
charlie11451419112 小时前
现代C++指南:Lambda,让我们用另一种方式持有函数
开发语言·c++
想吃火锅100512 小时前
【leetcode】121.买卖股票的最佳时机js/c++
算法·leetcode·职场和发展
森G13 小时前
77、线程池原理和实现------服务器源码解析----云视频服务项目
服务器·c++·qt
码云数智-大飞13 小时前
RAII 与智能指针深度拆解
java·前端·算法
Dick50713 小时前
ROS2 常用命令表
人工智能·学习·算法·机器人
.千余13 小时前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
代码改善世界13 小时前
【C++进阶】C++11:列表初始化、右值引用与移动语义、完美转发全解析
java·开发语言·c++
apcipot_rain14 小时前
计科八股20260616(2)/面经——线性代数对称阵求n次幂、概率论最大似然估计
算法
牛油果子哥q14 小时前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集