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

专题四:综合练习(组合总和的暴搜dfs)

以leetcode39题为例

题目解析: 

给一个数组,然后可以无限制的使用里面的数字,选一些数全部加起来,如果等于target就是一种

算法原理分析: 

1.画决策树:越详细越好

代码设计:

1.全局变量:需要返回vector<vector<int>>所以我们设计一个vector<vector<int>>ret

                     需要一个path,当结点的和等于target时我们就放入ret中

                     int sum,用于计算path中的总和

                     int target,用于比较是否到达总和

2.dfs函数:从前往后枚举数组中的每一个元素

3.细节:回溯:每次恢复现场都要pop一下才进入下一个,并且path也要处理一下

              剪枝:只需要path+candidate[i]是否大于总和,大于就剪掉,也就是不选

             递归出口:当发现path==target时就return

代码编写:

 

这里注意:要去重,也就是3,2和2,3的组合一样

我在前面选2的时候已经考虑过2,3了

所以在接下来到罗列3的时候,不要在从2开始罗列,要从3,3开始罗列 

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

相关文章:

  • printf耗时高的原因
  • UE 材质基础 第一天
  • nginx集成防火墙ngx_waf的docker版
  • 重庆 ICPC 比赛游记
  • Vue 3.0中响应式依赖和更新
  • list重点接口及模拟实现
  • 从复杂系统(杂多集合的实例)到智慧系统(理想集合的建构)
  • docker迅雷自定义端口号、登录用户名密码
  • 【嵌入式项目-MCU代码2】
  • Bitmap、Roaring Bitmap、HyperLogLog对比介绍
  • BootCDN介绍(Bootstrap主导的前端开源项目免费CDN加速服务)
  • LLM笔记(二)LLM数据基础-分词算法(2)
  • Linux面试题集合(1)
  • 前端扫盲HTML
  • 深入理解构造函数,析构函数
  • 威布尔比例风险模型(Weibull Proportional Hazards Model, WPHM)详解:原理、应用与实施
  • MATLAB进行深度学习网络训练
  • WSL 安装 Debian 12 后,如何安装图形界面 X11 ?
  • 【论文#目标检测】End-to-End Object Detection with Transformers
  • 在Maven中使用Ant插件
  • 【和春笋一起学C++】(十四)指针与const
  • 50个Python常用的模块,配对应的官网文档!!
  • 专业技术知识和技能,机械泵场效应管短路维修方法主要步骤方法
  • Linux_ELF文件
  • 【EDA软件】【联合Modelsim仿真使用方法】
  • 数据结构*优先级队列(堆)
  • 【笔记】正弦量的相量表示
  • 字体样式集合
  • (4)python爬虫--JsonPath
  • 框架之下再看HTTP请求对接后端method