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

组合问题(多条件)

39. 组合总和 - 力扣(LeetCode) 

class Solution {
private:vector<vector<int>>result;vector<int>path;void backtracking(vector<int>& candidates, int target,int sum,int startIndex){if(sum>target){return;}if(sum==target){result.push_back(path);return;}for(int i=startIndex;i<candidates.size();i++){path.push_back(candidates[i]);sum+=candidates[i];backtracking(candidates,target,sum,i);sum-=candidates[i];path.pop_back();}}
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {backtracking(candidates,target,0,0);return result;}
};

这道题的搜索过程可以构造成树形结构,与其他组合问题不同的是可以再次搜索自己本身,最后找到路径和等于目标值。 

终止条件:路径和如果大于目标值,则返回到上一次递归;如果路径和与目标值相等,则将路径数组的值push进result数组中。

单层递归逻辑:定义一个数startIndex来统计遍历到数组的哪一个数,遍历这个数本身到最后的所有数,将遍历的数push入path数组中,定义sum统计遍历到现在的路径和,再向下进行递归,传入的startIndex值是i,因为搜索的值可以是自己本身。为了返回到上一层再进行新递归,所以要进行回溯算法,sum值减去加入的值,path数组pop出刚刚push进的值。

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

相关文章:

  • Linux 系统安全基线检查:入侵防范测试标准与漏洞修复方法
  • C语言| 静态局部变量
  • 3级-运算符
  • 从数据中台到数据飞轮:实现数据驱动的升级之路
  • 论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
  • SparkSQL入门指南:从基础到实践的全面解析
  • 配置Nginx启用Https
  • 豌豆 760 收录泛滥现象深度解析与应对策略
  • FedTracker:为联邦学习模型提供所有权验证和可追溯性
  • Unity3D 序列化机制:引擎内的应用场景和基本原理
  • vue3项目创建-配置-elementPlus导入-路由自动导入
  • 江苏发改委回复:分时电价调整对储能项目的影响 源网荷储一体化能量管理系统储能EMS
  • 为什么企业建站或独立站选用WordPress
  • C程序的存储空间分配
  • 汉得 x 真味生物|H-ZERO PaaS项目启动,共启数字化新征程!
  • 可视化+智能补全:用Database Tool重塑数据库工作流
  • java 结合 FreeMarker 和 Docx4j 来生成包含图片的 docx 文件
  • 七、深入 Hive DDL:管理表、分区与洞察元数据
  • 邀请函|PostgreSQL培训认证报名正式开启
  • 演员评论家算法
  • LS-DYNA一箭穿心仿真分析
  • Oracle CDB 与 Non-CDB (NoCDB) 的区别
  • Linux(1)编译链接和gcc
  • typedef unsigned short uint16_t; typedef unsigned int uint32_t;
  • Lin4neuro 系统详解
  • Qt应用程序启动时的一些思路:从单实例到性能优化的处理方案
  • zabbix最新版本7.2超级详细安装部署(一)
  • VS Code怎么设置python SDK路径
  • 理解计算机系统_并发编程(5)_基于线程的并发(二):线程api和基于线程的并发服务器
  • Ascend的aclgraph(六)AclConcreteGraph