贪心算法背包问题
def test(c, n): # c:背包容量,n:元组列表,第一个数是物品重量,第二个数是物品价值
n = sorted(n, key=lambda n: n[1] / n[0], reverse=True) # 按物品的单位价值降序排列
w = 0
v = 0
for i in n: #: 遍历物品
if w + i[0] <= c: #: 重量不超过背包负载,整个装入
w += i[0]
v += i[1]
else: #: 拆分装入
v += i[1] * (c - w) / i[0]
break
return v
print(test(8, [(2, 5), (4, 4), (5, 6), (3, 2)]))
结果:
你的 else 满足时,i 的数据是 (4,4) 啊,所以。。。怎么会有小数呢?