为什么结果是12而不是11.4

贪心算法背包问题

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)]))

结果:

img

你的 else 满足时,i 的数据是 (4,4) 啊,所以。。。怎么会有小数呢?