穷举vs暴搜vs深搜vs回溯vs剪枝系列一>组合

题目:


解析:


代码:

java 复制代码
 private List<List<Integer>> ret;
    private List<Integer> path;
    private int n,k;
    public List<List<Integer>> combine(int _n, int _k) {
        n = _n;
        k = _k;
        path = new ArrayList<>();
        ret = new ArrayList<>();
        dfs(1);
        return ret;
    } 

    private void dfs(int start){
        if(path.size() == k){
            ret.add(new ArrayList(path));
            return;
        } 

        for(int i = start; i <= n; i++){
            path.add(i);
            dfs(i+1);//剪枝:选过接着往后选

            path.remove(path.size()-1);//恢复现场
        }
    }
相关推荐
San813_LDD15 分钟前
[数据结构]LeetCode学习
数据结构·算法·图论
x1387028595720 分钟前
c语言排雷游戏(基础版9*9)
c语言·算法·游戏
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.06.06 题目:2196. 根据描述创建二叉树
笔记·算法·leetcode
小欣加油1 小时前
leetcode994 腐烂的橘子
数据结构·c++·算法·leetcode·bfs
QuZero2 小时前
Guava Cache Deep Dive
java·后端·算法·guava
随意起个昵称2 小时前
线性dp-LIS题目4(A Twisty Movement)
算法·动态规划
Felven3 小时前
B. Fair Numbers
数据结构·算法
人道领域3 小时前
【LeetCode刷题日记】93.复原IP地址
java·开发语言·算法·leetcode
jarreyer3 小时前
【算法记录1】模型训练问题
算法