完全揹包的場景:
乙個有固定體積v的揹包,有一些物品,往包裡裝,在不超過包的體積的情況下,使得包裡裝的價值最大。每個物品可以重複裝。
n:表示可以裝進包裡的東西的個數
v:表示這個揹包的體積
weight[n]:表示重量的陣列
value[n]:表示價值的陣列
dp[v]:表示包裡的總價值的陣列
weight = [3, 2, 2, 8, 4, 2, 2, 7]
value = [3, 4, 2, 7, 5, 3, 1, 6]
v = 12, n = 8;
那麼這個**為:
i \ j12
3456
78910
111210
0333
6669
99122
0033
3666
99912
3023
4567
891011124
0234
5688
1011
121350
2345
68810
1112136
0234
5688
1011
121372
46810
1214
1618
2022248
2468
1012
1416
1820
2224
行代表包剩餘的體積為j,列代表物品的id
所以最大的價值為24,即全部取7號物品
**實現為:
class
bag_all
;int
weight =
;int a =
bagall(8
,12, value, weight)
; system.out.
println
(a);
}public
static
intbagall
(int n,
int v,
int[
]value,
int[
]weight)
}return dp[v];}
public
static
intmax
(int a,
int b)
}
揹包問題2(完全揹包)
問題的提出 有n種物品,乙個容量為v的揹包,每種物品可以無限的加入揹包,第i種物品的價值為v i 花費為w i 求將那些裝入揹包能讓價值最大且不超過揹包的容量?思路 該題類似於01揹包,唯一的不同就是所有的物品可以無限取,這樣從物品的角度考慮就會有多中方法,不像01中的取或不取 當然01揹包作為最基...
揹包問題2 完全揹包
一,題目 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求解將哪些物品裝入 揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。二,基本思路 從每種物品的角度考慮,與它相關的策略已並非取或不取兩種,而是有取0件 取1件 取2件 等很多種。令f ...
No 2 完全揹包問題
題目 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題十分類似01揹包,不同的是每種物品有無限件。也就是從每種物品的角度考慮,與它相關的策略已並非取或不取兩種...