有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 元。於是,他把每...