leetcode:括号生成

 回溯的本质是穷举,穷举所有情况,这里有剪枝,只在有效情况下继续

复制代码
class Solution {
    vector<string> res;
    string str;
    void backtracking(int left,int right){
        if(left<0 || left>right) return;//出现无效情况就不继续
        if(left==0 && right==0){
            res.emplace_back(str);
            return;
        }
        if(left>0){//只在有效情况下继续
            str+='(';
            backtracking(left-1,right);
            str.pop_back();
        }
        if(right>left){
            str+=')';
            backtracking(left,right-1);
            str.pop_back();
        }
    }
public:
    vector<string> generateParenthesis(int n) {
        res.clear();
        str.clear();
        backtracking(n,n);
        return res;
    }
};
复制代码

 

posted @   Ojalá  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示