当前位置: 首页 > news >正文

专题四:综合练习(组合问题的决策树与回溯算法)

以leetode77题为例

题目分析: 

给一个数字n,你可以在1到n中选k个数字进行组合,注意包括1和n,而且通过观察实例

1,2和2,1是一样的,所以我们画决策树的时候,只需要从当前位置往后列举

算法原理分析:

第一步:画决策树:越详细越好

代码设计:

1.全局变量:我需要一个vector<vector<int>>ret数组去搜集每个叶子节点

                     我需要一个path去标记路径,一旦到了叶子结点就放到ret中

                    还有一个是n+k-1,这个可以设计成dfs函数参数传递下去

2.dfs函数:dfs列举从当前位置开始往后,比如上一层已经罗列1,这一层就2开始

                  并且要传index++,标记罗列到什么为止,dfs(int pos,int index);

                  当path.size()==k时就是叶子结点

3.细节:回溯:恢复现场,返回上一层时需要pop

             剪枝:这里没必要,因为我通过index标记了每一层罗列到什么位置即可

             递归出口:path.size()==k时,即当是叶子结点时就返回

代码编写:

http://www.xdnf.cn/news/501985.html

相关文章:

  • 嘉立创EDA成图:文件管理
  • 【前端基础】11、CSS的属性特性(继承、层叠、元素类型、隐藏元素的四种方式)
  • 【笔记】正弦交流电路的特征量
  • MMDetection环境安装配置
  • 小蜗牛拨号助手用户使用手册
  • STM32中的DMA
  • Python自学笔记3 常见运算符
  • Redis 事务与管道:原理、区别与应用实践
  • 【JDBC】JDBC概述、历史版本及特征
  • 深入解析 React 的 useEffect:从入门到实战
  • (头歌作业)—6.1 葡萄酒评论分析报告(project)
  • DeepSeek超大模型的高效训练策略
  • 数据结构与算法——双向链表
  • 探秘 Java 字节缓冲流:解锁高效 IO 操作的进阶之路
  • Unity 人物模型学习笔记
  • MATLAB2025新功能
  • 开源项目实战学习之YOLO11:12.3 ultralytics-models-sam-encoders.py源码分析
  • gcc/g++常用参数
  • Go 语言的 GMP 模型
  • DeepSeek 赋能量子计算:突破与未来图景
  • Python时间处理全攻略:标准库与第三方库的实战应用
  • 如何 naive UI n-data-table 改变行移动光标背景色
  • Linux——shell编程
  • 线对板连接器的兼容性问题:为何老旧设计难以满足现代需求?
  • 前端-HTML元素
  • 匿名函数与闭包(Anonymous Functions and Closures)-《Go语言实战指南》原创
  • Java IO流进阶实战详解(含文件读写、拷贝、加密、字符集)
  • 【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信(含源代码)(十三)
  • 5月17日
  • LLM-Based Agent综述及其框架学习(五)