演算法導論 01揹包問題 (動態規劃)

2021-06-21 14:41:45 字數 639 閱讀 2663

描述

有編號分別為n[i]的五件物品,它們的重量分別是6, 9, 14, 16, 19,它們的價值分別是8, 13, 25, 44, 22,現在給你個承重為30的揹包,如何讓揹包裡裝入的物品具有最大的價值總和? 

/*遞迴求解*/

#include

#include

using namespace std;

const int weight=;

const int p = ;

int max_money(int i,int w)

int main(void)

;const int p = ;

int max_money(int n,int w) //將最後一件物品帶入裡面

{for(int i = 0 ; i <= n; i++) //當容量為0時,最大收益為0

v[i][0] = 0;

for(int j = 0 ; j <= w ; j++)//當沒有在包裡面裝東西時,最大收益為0

v[0][j] = 0;

for(int i = 1 ;i <=n ; i++)

for(int j = 1 ; j <= w ; j++)

{if(jint main(void)

{cout<

演算法導論16 2 2 動態規劃(0 1揹包問題)

小偷發現了n個商品,第i個商品重量為wi 價值為vi 小偷希望盡量拿走價值高的商品,但是他的揹包只能容納w重的商品。求如何取捨這些商品?由於對乙個商品,要麼被拿走要麼不被拿走,所以被稱為0 1揹包問題。我們如果採取列舉法進行比較,將會有2n 個情況,演算法複雜度與n呈指數關係。下面分析揹包問題的性質...

演算法導論03 動態規劃 01揹包問題

public class test int weight sort value,0,value.length 1 sort weight,0,weight.length 1 system.out.println value arrays.tostring value system.out.print...

演算法 動態規劃0 1揹包問題

有乙個容量為 n 的揹包,要用這個揹包裝下物品的價值最大,這些物品有兩個屬性 體積 w 和價值 v。定義乙個二維陣列 dp 儲存最大價值,其中 dp i j 表示前 i 件物品體積不超過 j 的情況下能達到的最大價值。設第 i 件物品體積為 w,價值為 v,根據第 i 件物品是否新增到揹包中,可以分...