194.回溯算法:组合总和||(力扣)

代码解决

class Solution {
public:vector<int> res; // 当前组合的临时存储vector<vector<int>> result; // 存储所有符合条件的组合// 回溯函数void backtracing(vector<int>& candidates, int target, int flag, int index, vector<bool>& used) {// 如果当前组合的和超过了目标值,则返回if (flag > target) return;// 如果当前组合的和等于目标值,则将当前组合加入结果集if (flag == target) {result.push_back(res);return;}// 遍历候选数组for (int i = index; i < candidates.size() && flag + candidates[i] <= target; i++) {// 如果当前元素和上一个元素相同且上一个元素没有被使用,跳过以避免重复组合if (i > 0 && candidates[i] == candidates[i - 1] && !used[i - 1]) {continue;}// 更新当前组合和flag += candidates[i];// 将当前元素加入当前组合res.push_back(candidates[i]);// 标记当前元素已使用used[i] = true;// 递归调用回溯函数,当前索引右移一位backtracing(candidates, target, flag, i + 1, used);// 回溯,移除当前元素used[i] = false;res.pop_back();flag -= candidates[i];}}// 主函数vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<bool> used(candidates.size(), false); // 标记数组,用于记录元素是否已被使用sort(candidates.begin(), candidates.end()); // 排序输入数组backtracing(candidates, target, 0, 0, used); // 初始调用回溯函数return result; // 返回所有符合条件的组合}
};

测试用例

输入

vector<int> candidates = {10, 1, 2, 7, 6, 1, 5}; int target = 8;

输出

[ [1, 1, 6], [1, 2, 5], [1, 7], [2, 6] ]

过程描述

  1. 初始状态

    • candidates = {1, 1, 2, 5, 6, 7, 10}(排序后)
    • target = 8
    • res = [](当前组合为空)
    • result = [](所有符合条件的组合为空)
    • used = {false, false, false, false, false, false, false}(所有元素未使用)
  2. 递归回溯

    • 从第一个元素 1 开始:
      • flag = 1res = [1],继续递归。
      • 再次选择 1
        • flag = 2res = [1, 1],继续递归。
        • 选择 6
          • flag = 8res = [1, 1, 6],符合目标值,将组合加入 result,回溯,移除 6
        • 选择 2
          • flag = 4res = [1, 1, 2],继续递归。
          • 选择 5
            • 超过目标值,回溯,移除 2
        • 选择 56710
          • 超过目标值,回溯。
      • 选择 2
        • flag = 3res = [1, 2],继续递归。
        • 选择 5
          • flag = 8res = [1, 2, 5],符合目标值,将组合加入 result,回溯,移除 5
        • 选择 6710
          • 超过目标值,回溯。
    • 选择 6
      • flag = 7res = [1, 6],继续递归。
      • 选择 710
        • 超过目标值,回溯。
    • 选择 7
      • flag = 8res = [1, 7],符合目标值,将组合加入 result,回溯,移除 7
    • 选择 10
      • 超过目标值,回溯。
    • 选择 2
      • flag = 2res = [2],继续递归。
      • 选择 6
        • flag = 8res = [2, 6],符合目标值,将组合加入 result,回溯,移除 6
      • 选择 710
        • 超过目标值,回溯。
    • 选择 5
      • flag = 5res = [5],继续递归。
      • 选择 6710
        • 超过目标值,回溯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么优化亚马逊Listing?看这一篇就够了!

运营亚马逊最重要的工作之一就是优化listing&#xff0c;精心优化好亚马逊标题、五点描述、图片和关键词才能提高产品的可见性和吸引力&#xff0c;很多小伙伴对于怎么写出专业的亚马逊listing还是不知道如何下手&#xff0c;今天为大家分享一套实用的亚马逊listing优化指南&am…

java 简单零钱通

目标 面向过程版 代码 package new_pluse;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class change_common{public static void main(String arg[]){//定义相关变量Scanner scanner new Scanner(System.in);String key&qu…

【深度学习】机器学习基础

机器学习就是让机器具备找一个函数的能力 带有未知的参数的函数称为模型 通常一个模型的修改&#xff0c;往往来自于对这个问题的理解&#xff0c;即领域知识。 损失函数 平均绝对误差&#xff08;Mean Absolute Error&#xff0c;MAE&#xff09; 均方误差&#xff08;Mea…

全面解读OA系统:功能、价值及应用

反复沟通、来回跑腿&#xff0c;还易出错&#xff1b; 纸笔记录、excel统计&#xff0c;效率低耽误事&#xff1b; 档案、物资&#xff0c;查不清记录、看不了实时&#xff1b; 部门各做各的、各管各的&#xff0c;沟通配合难…… 你有没有经历过诸如上述的繁琐办公流程&am…

MSA 助力实验室测量更稳定、更准确

在汽车制造、石油化工、电子制造等行业,产品的质量和性能需要通过准确的测量来保证。但是由于测量设备的误差、操作人员的主观影响以及环境条件的干扰等因素会导致测量系统出现各种问题,且这些问题会导致测量结果不准确,从而影响产品质量。 随着工业信息化的迅速发展, 各行业对…

松下的台灯值得入手吗?书客、飞利浦热门品牌横评分享!

自从儿子步入小学&#xff0c;他埋首于书桌前的时光愈发冗长&#xff0c;很欣慰他能够认真专心学习&#xff0c;却也隐隐担忧他的视力健康。在了解视力健康中发现长时间在过暗或过亮的光线环境下学习&#xff0c;会导致瞳孔频繁地收缩与扩张&#xff0c;极易引发视觉疲劳。更令…

Python 基础:用 json 模块存储和读取数据

目录 一、用 json 存储数据二、用 json 读取数据 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》 用户关闭程序时&#…

无门槛代理SSL证书入门指南

随着网络安全问题日益凸显&#xff0c;SSL证书作为保障网络数据传输安全的重要手段&#xff0c;其市场需求也在持续增长。因此&#xff0c;成为SSL证书代理不仅具有巨大的商业价值&#xff0c;更是提升网络安全保障能力的关键步骤。本文将为您介绍如何快速无门槛代理SSL证书的方…

GMSB文章六:微生物SCFA关联分析

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 介绍 微生物短链脂肪酸&#xff08;SCFAs&#xff09;是由肠道微生物发酵膳食纤维、抗性淀粉、低…

AI写作助力:如何用AI降重工具快速提升论文原创性?

高查重率是许多毕业生的困扰。通常&#xff0c;高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法&#xff0c;如修改文本和增添原创内容&#xff0c;虽必要但耗时且成效不一。 鉴于此&#xff0c;应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

抖音集成:通过MessageBox引领数字化营销新潮流

抖音集成&#xff1a;通过MessageBox引领数字化营销新潮流 在数字化营销的大潮中&#xff0c;企业需要不断探索新的方式来优化其营销策略&#xff0c;以抓住更多的市场机会。抖音作为一款全球知名的短视频社交平台&#xff0c;凭借其庞大的用户群体和高度互动的特性&#xff0…

v1.0.4优雅草超级站长工具开发进度更新·增加vip兑换功能·增加每个页面批量查询和清空功能

https://doc.youyacao.com/9/2157 v1.0.4优雅草超级站长工具开发进度更新增加vip兑换功能增加每个页面批量查询和清空功能 演示地址-可测试 https://test2.youyacao.com 介绍 本产品是一款针对站长使用的工具&#xff0c;针对网站域名的多维信息查询工具&#xff0c;本产品…

OpenAI推迟ChatGPT高级语音模式发布!谷歌将推出明星网红AI聊天机器人|AI日报

文章推荐 时序预测双飞轮&#xff0c;全面超越Transformer&#xff0c;纯MLP模型实现性能效能齐飞 OpenAI将终止对我国提供API服务&#xff0c;国内大模型将迎来“六小强”格局&#xff01;&#xff5c;AI日报 推迟ChatGPT高级语音模式发布&#xff01;OpenAI将计划在秋季向…

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境&#xff0c;对外端口为6200&#xff0c;忘记elasticsearch密码&#xff0c;进行重置操作 注&#xff1a;若无特殊说明&#xff0c;三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…

视频监控管理平台LntonCVS智能视频监控平台系统详细介绍

安防视频监控平台LntonCVS以其卓越的灵活性和便捷的部署特性在众多同类产品中脱颖而出。它不仅支持多种主流标准协议&#xff0c;如国标GB28181、RTSP/Onvif、RTMP等&#xff0c;还兼容了海康Ehome、海大宇等厂家的私有协议和SDK接入&#xff0c;为用户提供了更加丰富的选择。 …

Android 简单的so层逆向

前言 最近搞了一下安卓。简单学习记录一下。 目标程序&#xff1a; xiao shui mian 也就是某个参数的逆向 准备环境 安卓机scrcpyadbfrida解包软件&#xff08;不列举了&#xff09; 这种环境安装这里就不多说了。教程也很多。 参数逆向分析 先抓包看看参数 这里我使用…

【仿真建模-anylogic】ViewArea解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-27 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 应用场景 view area又叫视图区域&#xff0c;其作用是在presentation中标记一块区域&#xff0c;便于动画演示过程中快速切换可视区…

海豚调度调优 | 如何解决任务被禁用出现的Bug

&#x1f4a1; 本系列文章是 DolphinScheduler 由浅入深的教程&#xff0c;涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益。 本系列教程基于 DolphinScheduler 2.0.5 做的优化。&#xff…

PTA—C语言期末复习(选择题)

1. 按照标识符的要求&#xff0c;&#xff08;A&#xff09;不能组成标识符。 A.连接符 B.下划线 C.大小写字母 D.数字字符 在大多数编程语言中&#xff0c;标识符通常由字母&#xff08;包括大写和小写&#xff09;、数字和下划线组成&#xff0c;但不能以数字开头&#xff0c…

JDBC以及事务

1、JDBC是什么&#xff1f; JDBC是Java DataBase Connectivity&#xff08;Java语言链接数据库&#xff09; 2、JDBC的本质 JDBC是一套接口&#xff0c;有调用者&#xff08;java工程师&#xff09;和实现者&#xff08;SUN公司&#xff09;&#xff08;实现类被称为驱动&…