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.pswp.cn/diannao/36387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36387.shtml
英文地址,請注明出處:http://en.pswp.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;為用戶提供了更加豐富的選擇。 …