穷举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);//恢复现场
        }
    }
相关推荐
湫ccc4 分钟前
《机器学习》KNN算法实现手写数字识别
人工智能·算法·机器学习
老大白菜1 小时前
python 选择排序(Selection Sort)
python·算法·排序算法
酒鬼猿1 小时前
基础算法--滑动窗口
算法
叶子2024221 小时前
labelme下载
java·jvm·算法
计算机萍萍学姐2 小时前
ArrayList和LinkedList的区别是什么?
java·数据结构·算法
程序员南飞3 小时前
算法-excel表头位置转成对应数字 26进制转10进制
java·javascript·算法
老大白菜3 小时前
python 插入排序(Insertion Sort)
python·算法·排序算法
苍墨穹天3 小时前
大模型算法题(2)
人工智能·算法
打不了嗝 ᥬ᭄3 小时前
位运算与操作符应用
数据结构·算法·leetcode·蓝桥杯