穷举vs暴搜vs深搜vs回溯vs剪枝系列一>括号生成

题目:


解析:

该题:


1.决策树:


2.代码设计:

2.1.全局变量:


2.2.


代码:

java 复制代码
private List<String> ret;
    private int left,n,right;
    private StringBuffer path;
    public List<String> generateParenthesis(int _n) {
        n = _n;

        ret = new ArrayList<>();
        path = new StringBuffer();
        dfs();
        return ret;
    } 

    private void dfs(){
        //递归出口
        if(right == n) {
            ret.add(path.toString());
            return;
        }

        /** 
        剪枝写法:
         */ 
        
        //添加左括号
        if(left < n){
            path.append("("); left++;
            dfs();
            //回溯:恢复现场
            path.deleteCharAt(path.length()-1); left--;
        } 

        //添加右括号:右括号永远满足 <= 左括号
        if(right < left) {
            path.append(")"); right++; 
            dfs();
           //回溯:恢复现场
           path.deleteCharAt(path.length()-1); right--;
        }
    }
相关推荐
Erik_LinX几秒前
算法日记25:01背包(DFS->记忆化搜索->倒叙DP->顺序DP->空间优化)
算法·深度优先
Alidme7 分钟前
cs106x-lecture14(Autumn 2017)-SPL实现
c++·学习·算法·codestepbystep·cs106x
小王努力学编程8 分钟前
【算法与数据结构】单调队列
数据结构·c++·学习·算法·leetcode
最遥远的瞬间10 分钟前
15-贪心算法
算法·贪心算法
维齐洛波奇特利(male)1 小时前
(动态规划 完全背包 **)leetcode279完全平方数
算法·动态规划
项目申报小狂人2 小时前
改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)
开发语言·算法·matlab
让我们一起加油好吗2 小时前
【排序算法】六大比较类排序算法——插入排序、选择排序、冒泡排序、希尔排序、快速排序、归并排序【详解】
c语言·算法·排序算法
夏末秋也凉2 小时前
力扣-贪心-53 最大子数组和
数据结构·算法·leetcode
liruiqiang053 小时前
机器学习 - 投票感知器
人工智能·算法·机器学习
学编程的小程8 小时前
LeetCode216
算法·深度优先