描述
有編號分別為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 件物品是否新增到揹包中,可以分...