揹包問題動態規劃

2021-09-24 13:59:57 字數 817 閱讀 6993

有n個物品,每件物品的重量為w,價值為v,問:當揹包重量容量為w時,揹包的最大價值為多少?

可通過遞推的方式計算最大價值,想知道n個物品的最大價值,可如下考慮:

1、假如第n個物品的重量大於w,則揹包的最大價值為前n-1個物品的最大價值;

2、假如第n個物品的重量小於w,則揹包的最大價值為(前n-1個物品的最大價值)和

(前n個物品重量小於w-w[n]的最大價值加上第n個物品的價值)中的最大值,即為

max(maxvalue(n-1,w),maxvalue(n-1,w-w[n])+v[n])

由於我們知道沒有物品時的價值為0,w為0時價值也為0,這樣我們可得到初始條件

然後遞推即可得到n個物品的最大價值。

**如下:

#includeusing namespace std;

int max(int a,int b)

int dpweight(int v, int w, int w)

; //for (int i = 0; i < n; i++)

//value[i][0] = 0;

//for (int j = 0; j <= w; j++)

// value[0][j] = 0;

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

return value[n][w];

}int main()

; int w = ;

int w = 10;

cout << dpweight(v, w, w);

return 0;

}

動態規劃 揹包問題

給定n個物品,重量是,價值是,包的容量 承重 是w 問,放入哪些物品能使得包內價值最大 1 需要將問題轉化為子問題,通過遞迴實現,且子問題必然與父問題存在關聯 2 定義v i,j 表示為,當item取自前i個items且揹包capacity j 時,揹包問題的最優解,也即最高的價值。3 從前i個it...

動態規劃 揹包問題

不廢話,直接上 動態規劃,揹包問題。輸入為 int n 物品的種類數。int n weight 各件物品的重量。int n value 各種物品的價值。int w 揹包最大的裝載重量。輸出 v n b 的值,最大的裝載價值。x n 各類物品的裝載數量。author huangyongye publi...

動態規劃 揹包問題

1 開心的金明 問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n 元。於是,他把每...