美文网首页
算法|回溯组合问题

算法|回溯组合问题

作者: 激扬飞雪 | 来源:发表于2022-12-08 14:09 被阅读0次

一、 77. 组合

题目连接:https://leetcode.cn/problems/combinations/
思路:回溯法
使用模板

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}
 
class Solution {
    private List<Integer> paths;
    private List<List<Integer>> result;
    private void backTracking(int n, int k, int startIndex) {
        if (paths.size() == k) {
            result.add(new ArrayList<Integer>(paths));
            return;
        }
        //剪枝操作,k - paths.size() 还需要多少个
        for (int i = startIndex; i <= n - (k - paths.size()) + 1; i++){
            paths.add(i);
            backTracking(n, k, i + 1);
            paths.remove(paths.size() - 1);
        }
    }
    public List<List<Integer>> combine(int n, int k) {
        paths = new ArrayList<>();
        result = new ArrayList<>();
        backTracking(n,k, 1);
        return result;
    }
}

相关文章

  • 回溯算法之-组合总和

    回溯算法模版 首先上一套回溯算法模版,很多回溯算法都可以使用该模版解决 leetcode 39 组合总和 给定一个...

  • 算法-回溯算法总结

    回溯算法总结 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合 切割问题:一个字...

  • 算法学习(递归和回溯)

    回溯法 LeetCode 17 电话的字母组合,方法:回溯算法 LeetCode 93 复原IP地址(练习)完...

  • 回溯算法总结

    回溯法学习总结 回溯算法也是算法导论中常用的算法,回溯算法类似于暴力求解算法,经常用在求可能解的问题。下面我将从三...

  • 回溯算法

    回溯算法 回溯算法介绍   回溯算法并不是非常复杂的算法, 很多人接触过但是未必知道这是回溯算法; 典型的回溯算法...

  • 简单模式匹配改进:KMP算法

    回溯问题 上一讲 BruteForce算法的结尾中,我们提到了BruteForce算法的缺点,其中一条就是回溯问题...

  • 回溯算法团灭子集、排列、组合问题

    读完本文,你可以去力扣拿下如下题目: 78.子集[https://leetcode-cn.com/problems...

  • 「回溯算法」专题介绍

    「回溯算法」专题介绍 第 1 节:从全排列问题开始理解回溯搜索算法 引言 大家好,今天要和大家分享的主题是“回溯算...

  • 分支限界

    类似【回溯算法】,也是一种在问题的解空间树上搜索问题解的算法。但一般情况下,【分支限界】与【回溯算法】的求解目标不...

  • 回溯算法:八皇后问题和0-1背包问题

    文章结构 如何理解回溯算法 回溯算法的经典应用 完整源码 图片来源 1. 如何理解回溯算法 1.1 什么是回溯算法...

网友评论

      本文标题:算法|回溯组合问题

      本文链接:https://www.haomeiwen.com/subject/nvhafdtx.html