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…

打包下载怎么实现?

down_zbUploadClearfile({ //http接口 name:1 time:7, }).then(async (res) > { if (res) { this.selectData []; const zip new JSZip(); zip.generateAsync({ type: "object" }).then(() > { const downloadUrl window.URL.createObjectURL(res); …

Python中使用MySQL模糊查询的方法

1.方法一&#xff1a;使用pymysql库的方法 当在Python中使用MySQL进行模糊查询时&#xff0c;我们通常会使用pymysql或mysql-connector-python这样的库来连接MySQL数据库并执行查询。以下是一个使用pymysql进行模糊查询的详细示例&#xff0c;包括安装库、连接数据库、执行查询…

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

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

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

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

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

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

HTML5 WebSocket:实时通信的新篇章

随着互联网技术的飞速发展&#xff0c;实时交互成为现代Web应用不可或缺的一部分。在这一背景下&#xff0c;HTML5引入了WebSocket协议&#xff0c;彻底改变了传统的客户端与服务器之间的通信方式&#xff0c;为开发者提供了一种高效、全双工、低延迟的数据传输通道。本文将深入…

构建LangChain应用程序的示例代码:45、如何利用大型语言模型(LLMs)和 Python 库 SymPy 进行符号数学计算的教程

这个文件是一个关于如何使用大型语言模型和 Python 进行符号数学计算的示例。它主要展示了如何求解导数、积分、线性方程和微分方程。底层技术栈包括 SymPy&#xff0c;一个 Python 的符号数学库&#xff0c;以及 OpenAI 的 API&#xff0c;用于生成确定性的结果。 LLM 符号数…

无门槛代理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…

如何在Spring Boot应用中集成MongoDB数据库

如何在Spring Boot应用中集成MongoDB数据库 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用开发中&#xff0c;数据库是存储和管理数据的核心。Mon…

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

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