根據自己的理解,用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 該值取決...