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

【回溯】组合问题||

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。 

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

思路:此题最重要的一个点为:通过used的符号来判断是否继续执行操作。先初始化used为false之后若是树的上下排列其中used的值会为true,而是树本层的操作的话,used的值通过回溯会返回到false,自此可以直接跳过操作。

class Solution {vector<vector<int>> result;vector<int> tmp;public:void resultion(vector<int>& candidates, int target, int sum, int startindex,vector<bool> used) {if (sum > target)return;if (sum == target) {result.push_back(tmp);return;}for (int i = startindex; i < candidates.size(); i++) {if (i > 0 && candidates[i] == candidates[i - 1] &&used[i - 1] == false)continue;sum += candidates[i];used[i] = true;tmp.push_back(candidates[i]);resultion(candidates, target, sum, i + 1, used);tmp.pop_back();used[i] = false;sum -= candidates[i];}}vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<bool> used(candidates.size(), false);sort(candidates.begin(), candidates.end());resultion(candidates, target, 0, 0, used);return result;}
};

http://www.lryc.cn/news/306430.html

相关文章:

  • 【c语言】字符函数和字符串函数(下)
  • 基于Java的艺培管理解决方案
  • Python算法题集_实现 Trie [前缀树]
  • pytorch简单新型模型测试参数
  • Unity中URP下实现水体(水面高光)
  • 26.HarmonyOS App(JAVA)列表对话框
  • 五种主流数据库:常用字符函数
  • 软考笔记--企业资源规划和实施
  • React歌词滚动效果(跟随音乐播放时间滚动)
  • java面试题之mybatis篇
  • Java的编程之旅19——使用idea对面相对象编程项目的创建
  • docker build基本命令
  • nginx高级配置详解
  • 小程序--分包加载
  • R语言【base】——writeLines()
  • 微信小程序-人脸检测
  • 微信小程序自制动态导航栏
  • 金融知识分享系列之:五日线
  • 回归测试详解
  • 渲染效果图有哪几种分类?效果图为什么用云渲染更快
  • Docker镜像加速
  • 吴恩达deeplearning.ai:sigmoid函数的替代方案以及激活函数的选择
  • Alias许可分析中的数据可视化
  • 【计算机网络】数据链路层--以太网/MTU/ARP/RARP协议
  • typescript使用解构传参
  • CSP-J 2023 复赛第4题:旅游巴士
  • JAVA算法和数据结构
  • 每日五道java面试题之spring篇(七)
  • Keil编译GD32工程时找不到lib库文件
  • 测试C#使用ViewFaceCore实现图片中的人脸遮挡