揹包問題 python實現

2021-10-06 18:46:00 字數 1238 閱讀 9005

根據自己的理解,用python寫了揹包問題的求解:

問題描述:給定一組物品,每種物品都有自己的重量和**,在限定的重量內,如何選擇才能使物品的總價最高?

1.使用動態規劃的思想來解決揹包問題

解決思路:動態規劃,對每一件物品遍歷揹包容量,當揹包可容納值大於等於當前物品,與之前已放進去的物品所得價值進行對比,考慮是否需要置換。

**如下:

#m為包載重量,n為物品數,w為物品的重量,v為物品的價值

def bag(m,n,w,v):

#置零表示初始狀態

value = [[0 for i in range(m+1)] for j in range(n+1)]

for i in range(1,n+1):

for j in range(1,m+1):

value[i][j] = value[i-1][j]

if j >= w[i-1] and value[i-1][j-w[i-1]] + v[i-1]:

value[i][j] = value[i-1][j-w[i-1]] + v[i-1]

return value

def show(n, m, w, value):

print('最大價值為:', value[n][m])

x = [false for i in range(n)]

j = m

for i in range(n, 0, -1):

if value[i][j] > value[i - 1][j]:

x[i - 1] = true

j -= w[i - 1]

print('揹包中所裝物品為:')

for i in range(n):

if x[i]:

print('第', i+1, '個,', end='')

if __name__ == '__main__':

n = 6 #物品的數量,

m = 5 #書包能承受的重量,

w = [2, 2, 3, 1, 5, 2] #每個物品的重量,

v = [2, 3, 1, 5, 4, 3] #每個物品的價值

python揹包問題 揹包問題Python

題目 揹包容量ba 物品thing v 問題 1.是否可以裝滿揹包2.裝滿揹包最少需要多少件物品3.裝滿揹包最多需要多少件物品4.該揹包最多一共可以裝多重的物品5.裝滿揹包一共有多少種方案 就算物品重量一樣,但也是不同的方案 一 01揹包 def bag 01 bag v,thing v 是否可以裝...

python 揹包問題

乙個小偷在某個商店發現有n個商品,第i個商品價值 v iv i vi 元,中w iw i wi 千克。他希望拿走的價值盡量高,但他的揹包最多只能容納w千克的東西。他應該拿走拿些商品?例如 商品1 v 1v 1 v1 60 w 1w 1 w1 10 商品2 v 2v 2 v2 100 w 2w 2 w...

揹包問題 python

今天做筆試的時候第一道題是揹包問題的變形,但是死活想不出來怎麼做,在此記錄一下三種揹包問題的思路和基本 問題描述 有n件物品和容量為m的揹包 給出i件物品的重量w i 以及v i 價值,求解讓裝入揹包的物品重量不超過揹包容量,且價值最大 思路 i件物品,重量限制為j的最大價值設為f i j 該值取決...