代碼隨想錄第40天|動態規劃

完全背包

完全背包物品可以無限使用

01背包核心代碼

  • 01背包中的二維dp數組的兩個for遍歷可顛倒, 而一維dp數組的一定先遍歷物品再遍歷背包容量
  • 狀態轉移方程(背包容量一定為遞減)
    在這里插入圖片描述
    在這里插入圖片描述

完全背包核心代碼 (只在完全背包中一維dp數組嵌套順序可顛倒, 實際題目需要確定遍歷順序)

  • 狀態轉移方程(先物品, 再背包, 并且為遞增, 橫向更新數值)

  • 由于都是由前一個狀態推導, 所以只在純完全背包問題中可以顛倒, 區別是行更新或者列更新
    在這里插入圖片描述
    在這里插入圖片描述
    請添加圖片描述

  • 狀態轉移方程(先背包, 再物品, 遞增順序, 且為縱向更新)
    在這里插入圖片描述
    在這里插入圖片描述
    請添加圖片描述


518. 零錢兌換 II
在這里插入圖片描述
在這里插入圖片描述
遞推公式: dp[j] += dp[j - coins[i]]

概括物體和背包的遍歷情況

  • 先遍歷物品(coins)后遍歷背包(amount), 物品 coins[i] 只能在本次循環中添加, 下一次循環才添加coins[i+1], 只有一種: coins[i] coins[i + 1]
  • 先遍歷背包后遍歷物品時, coins[i] coins[i + 1] 與 coins[i + 1] coins[i] 會當成不同的情況處理

先物品后背包(僅僅只是組合問題, 不存在排列)
請添加圖片描述
在這里插入圖片描述

先背包后物品(存在排列問題)
請添加圖片描述
在這里插入圖片描述

class Solution {
public:int change(int amount, vector<int>& coins) {vector<int> dp(amount + 1, 0);dp[0] = 1;for (int i = 0; i < coins.size(); i++) {//遍歷物品for (int j = 0; j <= amount; j++) {//遍歷背包if (j - coins[i] >= 0)dp[j] += dp[j - coins[i]];}}return dp[amount];}
};

377. 組合總和 Ⅳ
在這里插入圖片描述
在這里插入圖片描述

class Solution {
public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target + 1, 0);dp[0] = 1;for (int j = 0; j <= target; j++) {for (int i = 0; i < nums.size(); i++) {if (j - nums[i] >= 0 && dp[i] < INT_MAX - dp[i - nums[j]]) //防兩個int相加會溢出dp[j] += dp[j - nums[i]];}}return dp[target];}
};

70.爬樓梯(進階版)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38933.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【高考志愿】建筑學

目錄 一、專業介紹 1.1 專業定義 1.2 專業培養目標 1.3 核心課程 二、就業方向和前景 2.1 就業方向 2.2 專業前景 三、報考注意 四、行業趨勢與未來展望 五、建筑學專業排名 一、專業介紹 1.1 專業定義 建筑學&#xff0c;這一充滿藝術與科技魅力的學科&#xff0c;…

天線 有源 無源 參數

無源測試駐波比VSWR/回波損耗(Return Loss)≤2效率≥50%輸入阻抗50R10%增益天線方向圖3D場強圖方向性 有源測試 OTA 傳導測試&#xff1a;發射功率傳導測試&#xff1a;接收靈敏度總輻射功率TRP(Total Radiated Power)≥發射功率減3dB總接收靈敏度TIS&#xff08;Total Isotrop…

JDBC1(JDBC相關類與接口 ?連接mysql數據庫? 測試 不同數據庫廠商實現-MySQL和Oracle)

目錄 一、JDBC 1. JDBC相關類與接口 1.1 DriverManager 1.2 Connection 1.3 Statement 4.ResultSet 2. JDBC工作原理 二、連接mysql數據庫 1. 導入jar包 2. 使用DriverManager加載驅動類 3. Connection接口 4. Statement接口 5. ResultSet接口 ?編輯 6. 關閉并…

顯卡簡介

顯卡是計算機系統中一個重要的組成部分&#xff0c;它負責處理圖形和視頻輸出。顯卡的性能直接影響到計算機的圖形處理能力&#xff0c;因此在游戲、視頻編輯、3D渲染等需要高性能圖形處理的應用中&#xff0c;顯卡的選擇至關重要。本文將從顯卡的基本概念、性能指標、市場現狀…

【Node.JS】入門

文章目錄 Node.js的入門涉及對其基本概念、特點、安裝、以及基本使用方法的了解。以下是對Node.js入門的詳細介紹&#xff1a; 一、Node.js基本概念和特點 定義&#xff1a;Node.js是一個基于Chrome V8引擎的JavaScript運行環境&#xff0c;它使得JavaScript能夠運行在服務器…

【鴻蒙學習筆記】基礎組件Progress:進度條組件

官方文檔&#xff1a;Progress 目錄標題 作用最全屬性迭代追加進度賦值風格樣式 作用 進度條組件 最全屬性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 顏色.width(200)// 大小.height(50)// 高度.value(50)// 進度可更…

視頻轉音頻:怎樣提取視頻中的音頻?6個提取音頻的小技巧(建議收藏)

怎樣提取視頻中的音頻&#xff1f;當我們想從視頻中提取出聲音時&#xff0c;通常會遇到很多問題。無論是想單獨提取出視頻里的音頻&#xff0c;還是把它轉成方便儲存或者分享的音頻格式&#xff0c;這都會涉及到視頻轉音頻的一個需求。因此&#xff0c;在這篇指南里&#xff0…

Spring Cloud - 項目搭建

1、新建maven項目 新建maven項目&#xff0c;該項目為主項目 1、新建maven項目 2、設置項目類型 3、選擇項目原型 4、設置參數 5、等著完成 2、設置項目信息 1、右鍵&#xff0c;項目屬性 2、設置jdk版本 3、選擇jdk17 4、修改編譯版本 5、右鍵項目&#xff0c;選擇maven->u…

【吊打面試官系列-MyBatis面試題】模糊查詢 like 語句該怎么寫?

大家好&#xff0c;我是鋒哥。今天分享關于 【模糊查詢 like 語句該怎么寫?】面試題&#xff0c;希望對大家有幫助&#xff1b; 模糊查詢 like 語句該怎么寫? 第 1 種&#xff1a;在 Java 代碼中添加 sql 通配符。 string wildcardname “%smi%”; list<name> names …

CDH安裝和配置流程

這份文件是一份關于CDH&#xff08;Clouderas Distribution Including Apache Hadoop&#xff09;安裝的詳細手冊&#xff0c;主要內容包括以下幾個部分&#xff1a; 1. **前言**&#xff1a; - CDH是基于Apache Hadoop的發行版&#xff0c;由Cloudera公司開發。 - 相比…

技術派全局異常處理

前言 全局的異常處理是Java后端不可或缺的一部分&#xff0c;可以提高代碼的健壯性和可維護性。 在我們的開發中&#xff0c;總是難免會碰到一些未經處理的異常&#xff0c;假如沒有做全局異常處理&#xff0c;那么我們返回給用戶的信息應該是不友好的&#xff0c;很抽象的&am…

【一篇文章帶你搞懂--拉鏈表!!!拉鏈表的原理是什么!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是書生?&#xff0c;今天主要和大家分享一下拉鏈表的原理以及使用,希望對大家有所幫助。 大家可以關注我下方的鏈接更多優質文章供學習參考。 &#x1f49e;&#x1f49e;代碼是你的畫筆&#xff0c;創新是你…

深入解析:WebKit的JavaScript引擎與V8引擎的比較研究

在現代Web開發中&#xff0c;JavaScript引擎是瀏覽器的核心組件之一&#xff0c;它們負責解析和執行JavaScript代碼。WebKit和V8是兩個非常著名的JavaScript引擎&#xff0c;分別被用于不同的瀏覽器和環境中。WebKit的JavaScript引擎最初是Nitro&#xff0c;后來被JavaScriptCo…

【超簡單-Java設計模式1】設計模式的定義、分類及七大設計原則

引言 Java設計模式從入門到精通-設計模式的定義、設計模式分類及七大設計原則 設計模式簡介 在軟件開發中&#xff0c;設計模式是解決常見設計問題的最佳實踐。它們為開發者提供了一種通用的解決方案&#xff0c;使得代碼更加靈活、可復用和可維護。在Java編程語言中&#x…

Flink 運行時架構

Flink 運行時的組件 作業管理器&#xff08;JobManager&#xff09;資源管理器&#xff08;ResourceManager&#xff09;任務管理器&#xff08;TaskManager&#xff09;分發器&#xff08;Dispatch&#xff09; JobManager 控制一個應用程序執行的主進程&#xff0c;也就是說…

LiveNVR監控流媒體Onvif/RTSP用戶手冊-概覽:CPU使用、存儲使用、帶寬使用、負載、內存使用、通道統計

LiveNVR監控流媒體Onvif/RTSP用戶手冊-概覽:CPU使用、存儲使用、帶寬使用、負載、內存使用、通道統計 1、概覽1.1、通道統計1.2、負載1.3、CPU使用1.4、存儲使用1.5、帶寬使用1.6、內存使用 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒體服務 1、概覽 1.1、通道統計 顯示可用通道&…

構建Kylin Cube的藝術:最佳實踐指南

構建Kylin Cube的藝術&#xff1a;最佳實踐指南 Apache Kylin是一個開源的大數據分析引擎&#xff0c;專為大規模數據集提供快速的查詢能力。Kylin的核心是Cube&#xff0c;它是一種多維數據模型&#xff0c;能夠顯著提高查詢性能。然而&#xff0c;設計一個高效的Cube需要考慮…

Lipschitz 連續,絕對連續

1. Lipschitz 連續 經常聽到這個名詞&#xff0c; Lipschitz 連續比普通連續更強&#xff0c;不僅要求函數連續&#xff0c;還要求函數的梯度小于一個正實數。 在單變量實數函數上的定義可以是&#xff1a; 對于定義域內任意兩個 x 1 x_1 x1? and x 2 x_2 x2?, 存在一個…

云計算與生成式AI的技術盛宴!亞馬遜云科技深圳 Community Day 社區活動流程搶先知道!

小李哥最近要給大家分享7月7日在深圳的即將舉辦的亞馬遜云科技生成式AI社區活動Community Day &#xff0c;干貨很多內容非常硬核&#xff0c;不僅有技術分享學習前沿AI技術&#xff0c;大家在現場還可以動手實踐沉浸式體驗大模型&#xff0c;另外參與現場活動還可以領取諸多精…

順序表(C語言詳細版)

1. 線性表 線性表(lina list)是n個具有相同特性的數據元素的有限序列。線性表是一種在實際中廣泛使用的數據結構&#xff0c;常見的線性表&#xff1a;順序表、鏈表、棧、隊列、字符串...... 線性表在邏輯上是線性結構&#xff0c;也就是說連續的一條直線。但是在物理結構上并…