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;
}

};
相关推荐
Yuk丶12 小时前
厌倦了假AI对话?本地 LLM 语音对话 + 口型同步系统 2.0(已开源!)
c++·人工智能·语言模型·开源·ue4·语音识别·游戏开发
2501_9318037512 小时前
线性筛(欧拉筛):从原理到应用
算法
kyle~12 小时前
ROS2---零拷贝
linux·c++·机器人·ros2
Ricky_Theseus12 小时前
栈 & 队列 应用场景
数据结构·c++
ysu_031412 小时前
leetcode数据结构与算法5~7:链表双指针与二级指针
数据结构·学习·算法·leetcode·链表
薇茗12 小时前
【C++】类与对象 核心篇
开发语言·c++
ouliten12 小时前
C++笔记:偏现代C++日志系统
c++·笔记
猪脚饭还是好吃的12 小时前
【分享】C4droid 安卓C++编译器 手机编程超便捷
android·c++·智能手机
草莓熊Lotso12 小时前
【Linux网络】深入理解传输层 UDP 协议:从底层原理到实战应用
linux·运维·服务器·c语言·网络·c++·udp
小欣加油12 小时前
leetcode542 01矩阵
数据结构·c++·算法·leetcode·矩阵·bfs