動態規劃4揹包問題

2022-05-13 09:10:49 字數 1459 閱讀 3559

貪心演算法。

1、先放入價值最大的。這個肯定不行

2、放入平均價值最大的,也不行

二維陣列作為記憶化搜尋

第一行,只有0這個物品的時候,對應容量的最大值

第二行,考慮0和1兩件物品的時候

第三行,0,1,2都考慮

(1,2)這個點

對1考慮放入1,對0考慮容量為0的時候,對應的大小。兩個加起來和6比較

對於第三行來數

2,0 肯定是0,因為沒有容量

2,1 此時只能放入價值為6的物品

2,2的時候,參考上面的最大值,因為容量是2,還不能考慮自身(容量3)

對於2,3

第一種是不考慮自身,那麼最大值就是上面的16

第二張是考慮自身,把自己放進去剛好佔滿,價值是12,以及加上(1,0)【這種是0和1都考慮之後,容量為0的情況】

所以取兩者最大值16

大前提:每個物品只能選一次

動態規劃

空間複雜度的優化

交替使用

上面永遠是i為偶數,下面永遠是i為奇數

i只需%2即可

空間可以大很多很多

其實一行空間也可以

觀察到每次只需要使用左邊和上邊的元素,根本不會碰到右邊。

當現在要填1那一行的時候,從右邊填起,根本不會有影響。

上一行的內容,就是自己。左邊的內容,就是左邊。

**也更優雅

動態規劃 揹包問題

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