【動態規劃入門】01背包問題

每日一道算法題之01背包問題

  • 一、題目描述
  • 二、思路
  • 三、C++代碼
  • 四、結語

一、題目描述

題目來源:Acwing

有N件物品和一個容量是 V的背包。每件物品只能使用一次。第 i件物品的體積是 vi,價值是 wi。
求解將哪些物品裝入背包,可使這些物品的總體積不超過背包容量,且總價值最大。輸出最大價值。

C++程序要求輸入輸出格式如下:
輸入格式
第一行兩個整數,N,V,用空格隔開,分別表示物品數量和背包容積。接下來有 N 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i件物品的體積和價值。

輸出格式
輸出一個整數,表示最大價值。

示例如下:

輸入:                    輸出:8
4 5
1 2
2 4
3 4
4 5

?

二、思路

??01背包問題是學習動態規劃的必經之路,按照之間的分析來看,依然是五個步驟:
??說明一下:a[i]表示物體i的重量,b[i]表示物體i的價值。
??1.確定dp數組的含義
??dp[i][j]表示的是前i件物品背包容量為j時的最大容量
??2.確定遞推公式
??那么可以有兩個方向推出來dp[i][j],

  • 不放物品i:由dp[i - 1][j]推出,即背包容量為j,里面不放物品i的最大價值,此時dp[i][j]就是dp[i -1][j]。(其實就是當物品i的重量大于背包j的重量時,物品i無法放進背包中,所以背包內的價值依然和前面相同。)
  • 放物品i:由dp[i - 1][j - a[i]]推出,dp[i - 1][j - a[i]] 為背包容量為j -a[i]的時候不放物品i的最大價值,那么dp[i - 1][j - a[i]] + b[i](物品i的價值),就是背包放物品i得到的最大價值 所以遞歸公式: dp[i][j] = max(dp[i - 1][j], dp[i -1][j - a[i]] + b[i]);

??3.dp數組的初始化

	for(int j=1;j<=V;j

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

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

相關文章

LeetCode題練習與總結:合并K個升序鏈表

一、題目 給你一個鏈表數組&#xff0c;每個鏈表都已經按升序排列。 請你將所有鏈表合并到一個升序鏈表中&#xff0c;返回合并后的鏈表。 二、解題思路 創建一個最小堆&#xff08;優先隊列&#xff09;來存儲所有鏈表的頭節點。這樣我們可以始終取出當前所有鏈表中值最小…

人工智能指數報告2023

人工智能指數報告2023 主要要點第 1 章 研究與開發第 2 章 技術性能第 3 章 人工智能技術倫理第 4 章 經濟第 5 章 教育第 6 章 政策與治理第 7 章 多樣性第 8 章 輿論 人工智能指數是斯坦福大學以人為本的人工智能研究所&#xff08;HAI&#xff09;的一項獨立倡議&#xff0c…

Java 石頭剪刀布小游戲

一、任務 編寫一個剪刀石頭布游戲的程序。程序啟動后會隨機生成1~3的隨機數&#xff0c;分別代表剪刀、石頭和布&#xff0c;玩家通過鍵盤輸入剪刀、石頭和布與電腦進行5輪的游戲&#xff0c;贏的次數多的一方為贏家。若五局皆為平局&#xff0c;則最終結果判為平局。 二、實…

redis 為什么會阻塞

目錄 前言 客戶端交換時的阻塞 redis 磁盤交換的阻塞 主從節點交互的阻塞 切片集群交互時的阻塞 異步執行的演變 redis 異步執行如何實現的 前言 大家對redis 比較熟悉吧&#xff0c;只要做項目都會用到redis&#xff0c;提高系統的吞吐。小米商城搶購高峰18k的qps&…

KubeSphere平臺安裝系列之三【Linux多節點部署KubeSphere】(3/3)

**《KubeSphere平臺安裝系列》** 【Kubernetes上安裝KubeSphere&#xff08;親測–實操完整版&#xff09;】&#xff08;1/3&#xff09; 【Linux單節點部署KubeSphere】&#xff08;2/3&#xff09; 【Linux多節點部署KubeSphere】&#xff08;3/3&#xff09; **《KubeS…

一句話講清楚數據庫中事務的隔離級別(通俗易懂版)

為什么我只說通俗易懂版不說嚴謹版? 因為嚴謹版遍地都是, 但是他們卻有一個缺點就是讓人看得云里霧里, 所以這就是我寫通俗易懂版的初衷! 但是既然是通俗易懂版就必然有缺陷, 只為了各位在開發過程中頭腦更加清晰, 如有錯誤還望兄弟們不吝賜教! 在MySQL數據庫中,事務一共有4…

C語言之strcmp函數,strlen函數

strcmp函數是比較兩個字符串ASCII大小的函數。 比較方式是自左向右比較&#xff0c;直到出現不同字符或者\0為止 語法格式 strcmp(字符串1,字符串2&#xff09; 如果兩個字符串相同&#xff0c;會返回數值0 如果字符串1>字符串2,會返回一個正數 如果字符串1<字符串2…

新一代電話機器人開源PHP源代碼

使用easyswoole 框架開發的 新一代電話機器人開源PHP源碼 項目地址&#xff1a;https://gitee.com/ddrjcode/robotphp 代理商頁面演示地址 http://119.23.229.15:8080 用戶名&#xff1a;c0508 密碼&#xff1a;123456 包含 AI外呼管理&#xff0c;話術管理&#xff0c;CR…

每日一題 — 復寫零

1089. 復寫零 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 首先找到最后一個復寫的數&#xff1a; 雙指針算法&#xff1a; 1、先判斷 cur 位置上的值 2、然后決定 dest 移動一步還是兩步 3、然后判斷 dest 是否到終點了 4、最后 cur 處理越界的情況 arr[n-1] …

使用sourceCompatibility = 11不匹配解決方法

運行springbootgradle項目報錯。 原因&#xff1a;在生產該項目時&#xff0c;選擇的JDK是11版本的&#xff0c;但是本地電腦只安裝了1.8版本。不兼容所以報錯。 解決辦法&#xff1a; 找到build.gradle配置文件—>找到sourceCompatibility ‘11’—>把11改成自己本地…

思維題(藍橋杯 填空題 C++)

目錄 題目一&#xff1a; ?編輯 代碼&#xff1a; 題目二&#xff1a; 代碼&#xff1a; 題目三&#xff1a; 代碼&#xff1a; 題目四&#xff1a; 代碼&#xff1a; 題目五&#xff1a; 代碼&#xff1a; 題目六&#xff1a; 代碼七&#xff1a; 題目八&#x…

用python和pygame庫實現刮刮樂游戲

用python和pygame庫實現刮刮樂游戲 首先&#xff0c;確保你已經安裝了pygame庫。如果沒有安裝&#xff0c;可以通過以下命令安裝&#xff1a; pip install pygame 示例有兩個。 一、簡單刮刮樂游戲 準備兩張圖片&#xff0c;一張作為背景bottom_image.png&#xff0c;一張作…

Leetcoder Day35| 動態規劃part02

62.不同路徑 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish” &#xff09;。 問總共有多少條不同的路徑&#xff…

如何在Linux配置C、C++、Go語言的編譯環境?

在 Linux 系統上配置 C、C、Go 語言的編譯環境可以通過安裝相應的編譯器和相關工具來實現。以下是在 Linux 系統上配置這些語言的編譯環境的一般步驟&#xff1a; 1. C 和 C 編譯環境配置&#xff1a; 安裝 GCC 編譯器&#xff08;一般 Linux 發行版都會包含&#xff09;&…

Android 顯示系統框架

一.FrameBuffer FrameBuffer 介紹&#xff1a; FrameBuffer中文譯名為幀緩沖驅動&#xff0c;它是出現在2.2.xx內核中的一種驅動程序接口。主設備號為29&#xff0c;次設備號遞增。 Linux抽象出FrameBuffer這個設備來供用戶態進程實現直接寫屏。FrameBuffer機制模仿顯卡的功能…

Day11:信息打點-Web應用企業產權指紋識別域名資產網絡空間威脅情報

目錄 Web信息收集工具 業務資產-應用類型分類 Web單域名獲取-接口查詢 Web子域名獲取-解析枚舉 Web架構資產-平臺指紋識別 思維導圖 章節知識點&#xff1a; Web&#xff1a;語言/CMS/中間件/數據庫/系統/WAF等 系統&#xff1a;操作系統/端口服務/網絡環境/防火墻等 應用…

dart中的事件隊列與微任務

dart在每個事件循環中&#xff0c;會先執行同步任務代碼&#xff0c;然后分別檢查兩個任務隊列&#xff1a;微任務隊列和事件隊列。dart總是先執行微任務隊列中的代碼&#xff0c;然后才是事件隊列中的代碼。當兩個隊列中的任務都執行完成后&#xff0c;線程進入休眠狀態&#…

Stable Diffusion WebUI API http://127.0.0.1:7860/docs空白

在嘗試調用Stable Diffusion WebUI API的時候&#xff0c;打開http://127.0.0.1:7860/docs遇到了以下頁面 網絡診斷是這樣的原因&#xff1a; 修bug&#xff0c;改來改去遇到了以下兩種頁面&#xff1a; 此時http://127.0.0.1:7860可以如下正常顯示&#xff1a; 查資料的時候找…

vue+springboot項目部署服務器

項目倉庫&#xff1a;vuespringboot-demo: vuespringboot增刪改查的demo (gitee.com) ①vue中修改配置 在public文件夾下新建config.json文件&#xff1a; {"serverUrl": "http://localhost:9090"//這里localhost在打包后記得修改為服務器公網ip } 然后…

[NSSCTF 2nd] web復現

1.php簽到 <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION);foreach ($black_list as $value) {if (stristr($ext, $value)){return false;}}return true; }if(i…