讲怔 发表于 2025-6-8 11:54:10

算法day19-回溯(1)

目录


[*]理论基础
[*]组合
[*]组合总和III
[*]电话号码的字母组合
一、理论基础

   回溯法,一般可以解决以下问题:

[*]组合问题:N个数里面按一定规则找出k个数的集合
[*]切割问题:一个字符按一定规则有几种切割方式
[*]子集问题:一个N个数的集合里面有多少符合条件的子集
[*]排列问题:N个数按照一定规则全排列,有几种排列方式
[*]棋盘问题:N皇后,解数独等
  组合无序,排列有序!
  回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度。递归就要有终止条件,所以必然是一棵高度有限的树。

 
  回溯法模板:
void backtracking(参数) {
    if (终止条件) {
      存放结果;
      return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
      处理节点;
      backtracking(路径,选择列表); // 递归
      回溯,撤销处理结果
    }
}二、组合_【组合问题】

 https://leetcode.cn/problems/combinations/description/?envType=problem-list-v2&envId=8At1GmaZ

class Solution {    List res;    List path;    public List combine(int n, int k) {      res = new ArrayList();      path = new ArrayList();      dfs(1,k,n);      //入口      return res;    }    public void dfs(int i,int k, int n){      if(path.size() == k){       //终止条件:树的深度到k            res.add(new ArrayList(path));            return;      }      for(int j=i; j n){            return;   //剪枝      }      for(int j=i; j

喳谍 发表于 2025-10-13 14:30:57

懂技术并乐意极积无私分享的人越来越少。珍惜

膏包 发表于 2025-11-1 07:02:30

前排留名,哈哈哈

杆树 发表于 2025-11-4 05:01:58

很好很强大我过来先占个楼 待编辑

裴涛 发表于 2025-12-17 03:55:44

这个有用。

薛小春 发表于 2025-12-27 16:07:32

感谢分享

拙因 发表于 2026-1-17 05:24:36

不错,里面软件多更新就更好了

嶝扁 发表于 2026-1-18 04:26:29

新版吗?好像是停更了吧。

都淑贞 发表于 2026-1-18 04:58:01

谢谢分享,试用一下

秦欣艷 发表于 2026-1-18 12:48:39

谢谢楼主提供!

仄谦 发表于 2026-1-18 18:12:22

不错,里面软件多更新就更好了

豹筒生 发表于 2026-1-19 11:36:31

感谢分享,下载保存了,貌似很强大

豌笆 发表于 2026-1-20 09:33:54

用心讨论,共获提升!

瞪皱炕 发表于 2026-1-25 10:11:54

这个好,看起来很实用

余思洁 发表于 2026-1-26 08:54:39

这个有用。

粹脍誊 发表于 2026-1-30 03:00:44

懂技术并乐意极积无私分享的人越来越少。珍惜

窝酴 发表于 2026-1-30 05:44:30

前排留名,哈哈哈

阎逼 发表于 2026-2-1 05:53:11

谢谢楼主提供!

材部 发表于 2026-2-3 11:30:55

感谢分享,学习下。

膏包 发表于 2026-2-7 04:46:21

热心回复!
页: [1] 2
查看完整版本: 算法day19-回溯(1)