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

组合问题(多条件)

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进的值。

相关文章:

  • AWS IoT Core自定义域名配置实战指南
  • 某实战项目登录口处的渗透测试
  • 机器学习 --- 特征工程(一)
  • redis数据结构-09 (ZADD、ZRANGE、ZRANK)
  • 线代第二章矩阵第八节逆矩阵、解矩阵方程
  • 脑机接口技术:开启人类与机器融合的新时代
  • Gatsby知识框架
  • 软考架构师考试-UML图总结
  • eward hacking 问题 强化学习钻空子
  • 科研领域开源情报应用:从全球信息网络到创新决策
  • SpringBoot与Eventuate Tram整合 - 实现转账最终一致性系统
  • 替换 FastJSON:推荐 Jackson 及详细用法指南(含工具类 + 替换方案)
  • Shell脚本实践(修改文件,修改配置文件,执行jar包)
  • 2025年中期大语言模型实力深度剖析
  • 如何使用远程桌面控制电脑
  • 【计算机视觉】OpenCV实战项目:基于OpenCV与face_recognition的实时人脸识别系统深度解析
  • 力扣hot100——347.前K个高频元素(cpp手撕堆)
  • 霍夫圆变换全面解析(OpenCV)
  • 在scala中使用sparkSQL连接MySQL并添加新数据
  • 需求跟踪矩阵准确性的5大策略
  • 优化营商环境,服务上海“五个中心”建设,北外滩有何举措?
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额5万元
  • 牧原股份子公司与养殖户种猪买卖纠纷案一审胜诉
  • 外交部就习近平主席将出席中拉论坛第四届部长级会议开幕式介绍情况
  • 媒体谈法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”
  • 著名蒙古族音乐学者马•斯尔古愣逝世,享年86岁