您的位置:首页 > 其它

多重背包问题(悲剧解法)

2013-10-14 21:25 435 查看
多重背包:输入 n, m, m是背包容量,n是物品种类, p存储物品价值, w存放物品重量, c存放每种的数量, 同种物品各个属性索引相同

方法:

笨办法:将同种物品集合做不同类来处理,于是将同种类的集合也拆分为01背包问题求解

#!/usr/bin/python
m = int(raw_input("get m as the max bag size:"))
n = int(raw_input("get n as the goods tots:"))

print("bag max store: %d, goods tots: %d" % (m, n))
table = [0]*(m+1)

p = [0]
w = [0]
c = [0]

for i in range(1, n+1):
    weigth = int(raw_input("get weigth:"))
    value =  int(raw_input("get val:"))
    nums =   int(raw_input("get nums:"))
    w.append(weigth)
    p.append(value)
    c.append(nums)

print p
print w
print c
#print table

for row in range(1, n+1):
    for count in range(1, c
+1):
        for col in range(m, 0, -1):
            if(w[row] <= col and table[col - w[row]] + p[row] > table[col]):
                            table[col] = table[col - w[row]] + p[row]

print table
print "max value can store:" + str(table[m])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: