0 1揹包問題的 python 實現

2021-08-19 05:55:56 字數 1116 閱讀 6204

揹包問題是乙個典型的動態規劃問題,這個不對其作解釋了,直接給出**。

求重量與價值分別為:[

10,

15], [

15,

25], [

20,

35], [

25,

45], [

30,

55], [

35,

70],揹包容量為 80 時可以容納的最大價值。

#動態規劃求揹包問題

things = [[0, 0], [10, 15], [15, 25], [20, 35], [25, 45], [30, 55], [35, 70]]

# things 代表物品的重量與價值

nums_0 = [0 for i in range(81)]

nums =

#假設揹包大小為 80,nums[n][m] 代表 只考慮前 n 個物品時 m 容量揹包的最大價值

def func(m, n):

if m < things[n][0]:

return nums[n - 1][m]

else:

return max(nums[n - 1][m], nums[n - 1][m - things[n][0]] + things[n][1])

#動態計算 前 n 個物品時 m 容量揹包的最大價值

for i in range(1,7):

numstemp =

for j in range(81):

#得到推導矩陣

for j in range(81):

if j % 5 == 0:

print(j, end=' ')

print(end='\n\n')

for num in nums[1:]:

for i in range(len(nums[0])):

if i % 5 == 0:

print(num[i], end=' ')

print()

#輸出推導矩陣

print("80 容量的揹包可以最大裝", nums[6][80], "價值的東西")

0 1揹包問題python 0 1揹包問題1

鼓搗好久 終於了然了一些 0 1揹包問題描述 有乙個竊賊在偷竊一家商店時發現有n件物品,第i件物品價值為vi元,重量為wi,假設vi和wi都為整數。他希望帶走的東西越值錢越好,但他的揹包中之多只能裝下w磅的東西,w為一整數。他應該帶走哪幾樣東西?注 0 1揹包問題中 每件物品或被帶走,或被留下,需要...

0 1揹包問題 python

測試資料 n 6 物品的數量,c 10 書包能承受的重量,w 2,2,3,1,5,2 每個物品的重量,v 2,3,1,5,4,3 每個物品的價值 def bag1 n,c,w,v value 0for j in range c 1 for i in range n 1 i 物品 1 i for i ...

揹包問題 01揹包問題

n個物品,總體積是v,每個物品的體積的vi,每個物品的最大價值是wi,在不超過v的體積下求最大價值 eg揹包容積為 5 物品數量為 4 物品的體積分別為 物品的價值分別為 思路定義乙個二位陣列int f new int n 1 v 1 f i j 就表示在1 i個物品中選取體積小於v的情況的最大價值...