算法之背包問題

? ?可分的背包問題是可以用貪心法來解決,而0-1背包問題通常使用動態規劃方法來解決。

可分背包問題
? ? ? ?在可分背包問題中,物品可以被分割,您可以取走物品的一部分以適應背包的容量。這里的關鍵是物品的價值密度,即單位重量的價值。您可以按照價值密度從高到低的順序選擇物品,先取價值密度最高的物品,然后是次高的,依此類推,直到背包裝滿為止。這種方法稱為貪心算法,因為它每一步都選擇當前看起來最優的選項。

0-1背包問題
? ? ? ?與可分背包問題不同,0-1背包問題中的物品不能分割。您必須決定是否將整個物品放入背包。這就需要使用動態規劃來找到最優解。動態規劃通過考慮所有可能的組合來確保找到最大價值。它使用一個二維數組 ( dp[i][w] ) 來存儲對于前 ( i ) 個物品,當背包容量為 ( w ) 時的最大價值。狀態轉移方程如下:

𝑑𝑝[𝑖][𝑤]=max?(𝑑𝑝[𝑖?1][𝑤],𝑑𝑝[𝑖?1][𝑤?𝑤𝑒𝑖𝑔?𝑡[𝑖]]+𝑣𝑎𝑙𝑢𝑒[𝑖])

? ? ? ?這里,( dp[i-1][w] ) 表示不選擇第 ( i ) 個物品時的最大價值,而 ( dp[i-1][w-weight[i]] + value[i] ) 表示選擇第 ( i ) 個物品時的最大價值。通過這種方式,動態規劃確保了在每一步都考慮了所有可能的選擇,從而找到了最優解。

軟考上也是有類似的題的。

請填寫1到4個空。

我來解釋這道題吧

首先將c這個二維數組變為0,也就是初始化,那個Memoized_Knapsack這個函數,將c二維數組設置為-1,-1就是已經結束的意思,然后執行Calculate_Max_Value這個函數,這個函數第一件事情就是判斷c[i][j]是否為-1,如果是-1就已經結束了,所以這個1這個空應該填c[i][j]。第二個if判斷也不難看出就是簡單的將物體數量為0的設置為0,把背包容量為0的設置為0.,倘若不知道下面的i,和j代表的什么可以看我上面寫的。i是物品數量,j是背包容量。

所以第二個空應該是j>=w[i],因為只有剩余的背包容量大于或者等于w[i]里面的容量,才可以被選進去,第三個空是再次調用Calculate_Max_Value(v,w,i-1,j-w[i])+v[i]? ,當c[i][j]選的值比那個temp小的時候,就進行一次互換就行了,也就是c[i][j]=temp。

總結:我覺得很好理解吧,求取到第i的物品的價格就是c[i][j],然后求下一個物品和之前的總價格temp,在與之比較,就行了。

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

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

相關文章

最小產品價格差值

題目描述 給定某產品多少天的價格,記錄于prices中,請找出任意兩天之間的最小價格差(即abs(prices[i] - prices[j]))的最小值,i!j)并計算最小介個差組合的個數 樣例1 輸入 [1,3,7,5,12] 輸出 3 樣例2…

VTK9.2.0+QT5.14.0繪制三維顯示背景

背景 上一篇繪制點云的博文中,使用的vtkCameraOrientationWidget來繪制的坐標軸,最近又學習到兩種新的坐標軸繪制形式。 vtkOrientationMarkerWidget vtkAxesActor 單獨使用vtkAxesActor能夠繪制出坐標軸,但是會隨著鼠標操作旋轉和平移時…

微服務中使用Maven BOM來管理你的版本依賴

摘要: 原創出處 sf.gg/a/1190000021198564 「飄渺Jam」歡迎轉載,保留摘要,謝謝! 為什么要使用BOM? 如何定義BOM? 項目使用方法? BOM(Bill of Materials)是由Maven提供的功能,它通過定義一整套相互兼容的jar包版…

通過 NIO + 多線程 提升硬件設備與系統的數據傳輸性能

一、項目展示 下圖(模擬的數據可視化大屏)中數據是動態顯示的 二、項目簡介 描述:使用Client模擬了硬件設備,比如可燃氣體濃度檢測器。Client通過Socket與Server建立連接,Server保存數據到txt文件,并使用W…

結構體(位段)內存分配

結構體由多個數據類型的成員組成。那編譯器分配的內存是不是所有成員的字節數總和呢? 首先,stu的內存大小并不為29個字節,即證明結構體內存不是所有成員的字節數和。 ??其次,stu成員中sex的內存位置不在21,即可推測…

Swift 請求用戶授權以跟蹤其跨應用或網站的活動

步驟1:導入框架 首先,需要在Swift文件中導入AppTrackingTransparency框架。 import AppTrackingTransparency import AdSupport步驟2:請求跟蹤許可 在適當的地方請求用戶的跟蹤許可。通常,這個請求會在應用啟動時或者在用戶執行某些操作(例如,訪問應用中的廣告相關功能…

Linux服務器安裝docker,基于Linux(openEuler、CentOS8)

本實驗環境為openEuler系統(以server方式安裝)(CentOS8基本一致,可參考本文) 目錄 知識點實驗 知識點 Docker 是一個開源的應用容器引擎。它允許開發者將應用及其所有依賴項打包到一個可移植的容器中,并發布到任何支持Docker的流行Linux或Wi…

基于python flask的web服務

基本例子 from flask import Flask app Flask(__name__) app.route(/)#檢查訪問的網址,根路徑走這里 def hello_world():return hello world#返回hello worldif __name__ __main__:# 綁定到指定的IP地址和端口app.run(host0.0.0.0, port1000, debugTrue)##綁定端…

設計一個完美的用戶角色權限表

設計一個完美的用戶角色權限表需要考慮系統的安全性、靈活性和可擴展性。以下是一個詳細的用戶角色權限管理表設計方案,包含多個表結構和字段描述。 目錄 1. 用戶表(Users Table)2. 角色表(Roles Table)3. 權限表&…

【數據結構與算法 | 基礎篇】環形數組模擬隊列

1. 前言 上文我們用環形單向鏈表實現了隊列.接下來我們用環形數組來模擬隊列.并實現了isFull()&#xff0c;isEmpty()等方法. 2. 環形數組模擬隊列 (1). Queue接口 : public interface Queue<E> {//向隊伍插入值, 插入成功返回true, 否則返回falseboolean offer(E v…

【Linux】TCP協議【上】{協議段屬性:源端口號/目的端口號/序號/確認序號/窗口大小/緊急指針/標記位}

文章目錄 1.引入2.協議段格式4位首部長度16位窗口大小32位序號思考三個問題【demo】標記位URG: 緊急指針是否有效提升某報文被處理優先級【0表示不設置1表示設置】ACK: 確認號是否有效PSH: 提示接收端應用程序立刻從TCP緩沖區把數據讀走RST: 對方要求重新建立連接; 我們把攜帶R…

windows 設置系統字體 (win11 win10)

由于微軟的字體是有版權的&#xff0c;所以我打算替換掉 1.下載替換工具 github的項目&#xff0c;看起來很多人對微軟默認字體帶版權深惡痛絕。 項目地址&#xff1a;nomeiryoUi地址 這里選取最新的版本即可 2.打開軟件 這里顯示標題欄不能改&#xff0c;確認&#xff0c;其…

蓋雅技能發展云,助力制造企業人效合一

制造行業盡管經歷多次變革&#xff0c;但企業對人的管理始終是一項高度依賴經驗和耗費人力的工作。隨著供應鏈管理和生產設備的自動化、數字化升級&#xff0c;如何將第一生產要素——人&#xff0c;通過數字化的工具融入制造過程的閉環&#xff0c;對企業實現自動化工廠和智能…

力扣 滑動窗口題目總結

Leetcode3.無重復字符的最長子串 思路&#xff1a; 這道題主要用到思路是&#xff1a;滑動窗口 什么是滑動窗口&#xff1f; 其實就是一個隊列,比如例題中的 abcabcbb&#xff0c;進入這個隊列&#xff08;窗口&#xff09;為 abc 滿足題目要求&#xff0c;當再進入 a&#x…

牛客NC334 字典序第K小【困難 10叉樹 Java/Go/PHP/C++】,力扣 440. 字典序的第K小數字

題目 題目鏈接&#xff1a; https://www.nowcoder.com/practice/670c2bda374241d7ae06ade60de33e8b https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/description/ 本答案核心 10叉樹, 數學規律Java代碼 import java.util.*;public class Solution {…

大模型的靈魂解讀:Anthropic AI的Claude3 Sonnet可解釋性研究

大模型技術論文不斷&#xff0c;每個月總會新增上千篇。本專欄精選論文重點解讀&#xff0c;主題還是圍繞著行業實踐和工程量產。若在某個環節出現卡點&#xff0c;可以回到大模型必備腔調重新閱讀。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;則提供了大模型領域最新技…

Vue集成Iframe

一、應用場景&#xff0c;為什么要集成Iframe&#xff1f; 1、龐大項目拆分后&#xff0c;便于管理和部署&#xff0c;用集成Iframe的方法合并 2、避免功能重復開發&#xff0c;共用模塊可單獨開發為一個項目&#xff0c;既可獨立部署&#xff0c;也可集成到中臺系統 二、集成…

[算法][前綴和] [leetcode]724. 尋找數組的中心下標

題目地址 https://leetcode.cn/problems/find-pivot-index/description/ 題目描述 代碼 class Solution {public int pivotIndex(int[] nums) {int total Arrays.stream(nums).sum();//前綴和int prefixSum 0;int len nums.length;for(int i 0;i<len;i){if (i-1>0){p…

小豬APP分發:一站式托管服務,輕松玩轉應用市場

在當今移動應用爆炸式增長的時代&#xff0c;開發者們面臨的挑戰不再僅限于創意的火花和代碼的實現&#xff0c;更在于如何讓精心打造的應用快速觸達廣大用戶。這正是小豬APP分發www.appzhu.net應運而生的背景——作為一個全面、高效的APP托管服務分發平臺&#xff0c;它為開發…

基于PHP的物業管理的設計與實現

第1章 緒論... 1 1.1 研究背景與意義... 1 1.2 國內外發展現狀... 2 第2章 關鍵技術介紹... 3 2.1 PHP語言... 3 2.2 MySQL數據庫... 3 2.3 Zend框架... 4 2.4 B/S架構... 4 第3章 系統需求分析... 5 3.1 可行性分析... 5 3.1.1 技術可行性分析... 5 3.1.2 經濟可行…