備戰藍橋杯 Day10(背包dp)

01背包問題

1267:【例9.11】01背包問題

【題目描述】

一個旅行者有一個最多能裝?M�?公斤的背包,現在有?n�?件物品,它們的重量分別是W1,W2,...,Wn�1,�2,...,��,它們的價值分別為C1,C2,...,Cn�1,�2,...,��,求旅行者能獲得最大總價值。

【輸入】

第一行:兩個整數,M�(背包容量,M<=200�<=200)和N�(物品數量,N<=30�<=30);

第2..N+12..�+1行:每行二個整數Wi,Ci��,��,表示每個物品的重量和價值。

【輸出】

僅一行,一個數,表示最大總價值。

【輸入樣例】

10 4
2 1
3 3
4 5
7 9

【輸出樣例】

12

方法一:搜索(時間復雜度高--O(2^n))?

#include<iostream>
using namespace std;
const int N = 30;
int m,n,v[N], w[N];
int mx;
bool vis[N];//標記
//搜索狀態curV當前已選物品的總價值,curW當前已選物品的總重量
void dfs(int curV, int curW,int dep) {if (curW > m) return;//攔截非法的curVmx = max(mx, curV);//5.通用終止條件if (dep == n + 1)  return;//一共n件物品,n件物品已經搜完了,結束//找出搜索所有方案里面的最大價值//1.枚舉方案for (int i = 1; i <= n; i++) {//2.判斷標記-防止重復搜索if (!vis[i]) {//3.標記+搜索vis[i] = 1;dfs(curV + v[i], curW + w[i], dep + 1);//4.回溯vis[i] = 0;}}
}
int main() {cin >> m >> n;for (int i = 1; i <= n; i++) {cin >> w[i] >> v[i];}dfs(0, 0, 1);//初始狀態cout << mx << endl;return 0;
}

方法二dp

#include<iostream>
using namespace std;
const int N = 30, M = 2e2 + 10;
int m,n,v[N], w[N];
int dp[N][M];
/*
01背包
特點:n件物品,每件物品只有一件,要么選(1),要么不選(0)
樸素版本
狀態 dp[i][j] 前i件物品在背包容量不超過j的前提下構成的最大價值
狀態轉移方程 if(j<w[i]) dp[i][j]=dp[i-1][j];//放不下,不放
else if(j>=w[i]) dp[i][j]=max(dp[i-1][j-w[i]]+v[i]放,dp[i-1][j]不放)//可以放
滾動數組優化
dp[]
*/
int main() {cin >> m >> n;for (int i = 1; i <= n; i++) cin >> w[i] >> v[i];//時間復雜度O(n^2)for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (j < w[i]) dp[i][j] = dp[i - 1][j];//放不下,不放//                                        放1                    不放0else if (j >= w[i]) dp[i][j] = max(dp[i - 1][j - w[i]] + v[i], dp[i - 1][j]);//可以放}}cout << dp[n][m] << endl;return 0;
}

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

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

相關文章

藍橋杯刷題--python-10(2023填空題3)

0工作時長 - 藍橋云課 (lanqiao.cn) import datetime time_str_list=[] while(True):tmp=input()if not tmp: breaktime_str_list.append(tmp)# time_list=[datetime.datetime.strptime(t,"%Y-%m-%d %H:%M:%S")for t in time_str_list] time_list.sort() sum=0 for i…

【代碼隨想錄算法訓練營Day25】● 216.組合總和III ● 17.電話號碼的字母組合

文章目錄 Day 25 第七章 回溯算法part02216.組合總和III自己的思路&#xff08;?通過&#xff09; 17.電話號碼的字母組合思路代碼 Day 25 第七章 回溯算法part02 今日內容&#xff1a; ● 216.組合總和III● 17.電話號碼的字母組合 216.組合總和III 如果把 組合問題理解了…

計算機組成原理(9)----硬布線控制器

控制單元CU若想發出對應的控制信號&#xff0c;則需要以下信息&#xff1a;指令操作碼&#xff0c;目前的機器周期&#xff0c;節拍信號&#xff0c;機器狀態條件&#xff0c;根據這些信息&#xff0c;CU就能確定在這個節拍下應該發出哪些"微命令"&#xff0c;也就是…

SQL注入:使用預編譯防御SQL注入時產生的問題

目錄 前言 模擬預編譯 真正的預編譯 預編譯中存在的SQL注入 寬字節 沒有進行參數綁定 無法預編譯的位置 前言 相信學習過SQL注入的小伙伴都知道防御SQL注入最好的方法&#xff0c;就是使用預編譯也就是PDO是可以非常好的防御SQL注入的&#xff0c;但是如果錯誤的設置了…

計算機設計大賽 深度學習動物識別 - 卷積神經網絡 機器視覺 圖像識別

文章目錄 0 前言1 背景2 算法原理2.1 動物識別方法概況2.2 常用的網絡模型2.2.1 B-CNN2.2.2 SSD 3 SSD動物目標檢測流程4 實現效果5 部分相關代碼5.1 數據預處理5.2 構建卷積神經網絡5.3 tensorflow計算圖可視化5.4 網絡模型訓練5.5 對貓狗圖像進行2分類 6 最后 0 前言 &#…

從零學算法238

238.給你一個整數數組 nums&#xff0c;返回 數組 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在 32 位 整數范圍內。 請 不要使用除法&#xff0c;且在 O(n) 時間復…

Python自動化UI測試之Selenium基礎實操

1. Selenium簡介 Selenium 是一個用于 Web 應用程序測試的工具。最初是為網站自動化測試而開發的&#xff0c;可以直接運行在瀏覽器上&#xff0c;支持的瀏覽器包括 IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Googl…

SVN忽略已提交的文件(ignore,移出版本控制)

本文適用于已安裝TortoiseSVN客戶端的同學。 1、右鍵點擊要忽略的文件夾或文件&#xff0c;鼠標移到“TortoiseSVN”&#xff0c;找到“Unversion and add to ignore list”&#xff0c;選擇文件夾&#xff0c;彈出提示框確認忽略。 2、設置完忽略文件后&#xff0c;還需要做…

多維時序 | Matlab實現GRU-MATT門控循環單元融合多頭注意力多變量時間序列預測模型

多維時序 | Matlab實現GRU-MATT門控循環單元融合多頭注意力多變量時間序列預測模型 目錄 多維時序 | Matlab實現GRU-MATT門控循環單元融合多頭注意力多變量時間序列預測模型預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.多維時序 | Matlab實現GRU-MATT門控循環單元融…

【Maven】介紹、下載及安裝、集成IDEA

目錄 一、什么是Maven Maven的作用 Maven模型 Maven倉庫 二、下載及安裝 三、IDEA集成Maven 1、POM配置詳解 2、配置Maven環境 局部配置 全局設置 四、創建Maven項目 五、Maven坐標詳解 六、導入Maven項目 方式1&#xff1a;使用Maven面板&#xff0c;快速導入項目 …

React Native框架開發介紹,以及其優點

大家好&#xff0c;我是咕嚕鐵蛋&#xff0c;在今天的文章中&#xff0c;我通過科技手段和大家一起探討一下React Native框架的開發介紹以及其優點。我深知選擇合適的開發工具對于項目的成功至關重要。而React Native作為一款流行的跨平臺移動應用開發框架&#xff0c;其獨特之…

Linux并發與競爭的基本概念

一. 簡介 Linux是一個多任務操作系統&#xff0c;肯定會存在多個任務共同操作同一段內存或者設備的情況&#xff0c; 多個任務甚至中斷都能訪問的資源叫做共享資源&#xff0c;在驅動開發中要注意對共享資源的保護&#xff0c;也就是要處理對共享資源的并發訪問。比如&#xf…

【服務器數據恢復】FreeNAS+ESXi虛擬機數據恢復案例

服務器數據恢復環境&#xff1a; 一臺服務器通過FreeNAS&#xff08;本案例使用的是UFS2文件系統&#xff09;實現iSCSI存儲&#xff0c;整個UFS2文件系統作為一個文件掛載到ESXi虛擬化系統&#xff08;安裝在另外2臺服務器上&#xff09;上。該虛擬化系統一共有5臺虛擬機&…

2024水科技大會暨技術裝備成果展覽會——高品質供水和飲用水水源安全保障論壇

供水與飲水安全直接關系到人民群眾的生活與健康&#xff0c;切實做好城市供水與飲水安全保障工作&#xff0c;是把以人為本真正落到實處的一項緊迫任務。近年來&#xff0c;中央和地方加大了城鄉供水與飲水安全保障工作的力度&#xff0c;對標最優質供水城市建設要求&#xff0…

[Angular 基礎] - service 服務

[Angular 基礎] - service 服務 之前的筆記就列舉三個好了……沒想到 Angular 東西這么多(&#xff70; &#xff70;;)……全加感覺越來越湊字數了 [Angular 基礎] - 視圖封裝 & 局部引用 & 父子組件中內容傳遞 [Angular 基礎] - 生命周期函數 [Angular 基礎] - 自…

請簡述你對SpringMVC的理解

SpringMVC是一種基于Java語言開發&#xff0c;實現了WebMVC設計模式&#xff0c;請求驅動類型 的輕量級Web框架。 采用了MVC架構模式的思想&#xff0c;通過把Model&#xff0c;View&#xff0c;Controller分離&#xff0c;將Web層進 行職責解耦&#xff0c;從而把復雜的Web應…

idea打開項目白屏

解決方法&#xff1a; 右鍵“最大化” idea打開項目白板解決方案_idea打開白屏-CSDN博客 IDEA 2022 CPU占用100%的問題及解決方法_java_腳本之家

STM32控制數碼管從0顯示到99

首先 先畫電路圖吧&#xff01;打開proteus&#xff0c;導入相關器件&#xff0c;繪制電路圖。如下&#xff1a;&#xff08;記得要保存啊&#xff01;發現模擬一遍程序就自動退出了&#xff0c;有bug&#xff0c;我是解決不了&#xff0c;所以就是要及時保存&#xff0c;自己重…

計算機組成原理(10)----微程序控制器

目錄 1.微程序控制器的設計思想 2.微指令的基本格式 3.微程序控制器的基本結構 &#xff08;1&#xff09;控制存儲器CM &#xff08;2&#xff09;CMAR &#xff08;3&#xff09;地址譯碼 &#xff08;4&#xff09;CMDR &#xff08;5&#xff09;微地址形成部件 &…

31.云原生Istio可觀測性之官網Bookinfo應用實戰演示

云原生專欄大綱 文章目錄 可觀測性kiali介紹Overview&#xff08;概觀&#xff09;Application&#xff08;應用維度&#xff09;workloads&#xff08;負載維度&#xff09;Services&#xff08;服務維度&#xff09;Istio Config&#xff08;配置維度&#xff09; Kiali部署…