多重背包问题(悲剧解法)
2013-10-14 21:25
435 查看
多重背包:输入 n, m, m是背包容量,n是物品种类, p存储物品价值, w存放物品重量, c存放每种的数量, 同种物品各个属性索引相同
方法:
笨办法:将同种物品集合做不同类来处理,于是将同种类的集合也拆分为01背包问题求解
方法:
笨办法:将同种物品集合做不同类来处理,于是将同种类的集合也拆分为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])
相关文章推荐