LeetCode 22. 括号生成

回溯

class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
backtracking(n,res,0,0,"");
return res;
}
void backtracking(int n,vector<string>& res,int l,int r,string str){
//剪枝
if(l<r){
return;
}
//返回正确结果
if(l==r && r==n){
res.push_back(str);
return;
}
//还有左括号
if(l<n){
str.push_back('(');
backtracking(n,res,l+1,r,str);
str.pop_back();
}
if(l>r){
str.push_back(')');
backtracking(n,res,l,r+1,str);
str.pop_back();
}
}
};
posted @   破忒头头  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示