def knapsack(fruits, capacity):
fruits.sort(key=lambda x: x[2] / x[1], reverse=True)
weight = 0
value = 0
print("装水果的策略:")
for fruit in fruits:
if weight + fruit[1] <= capacity:
weight += fruit[1]
value += fruit[2]
print(f"装入 {fruit[0]},重量:{fruit[1]}kg,价值:{fruit[2]}")
else:
fraction = (capacity - weight) / fruit[1]
weight += fraction * fruit[1]
value += fraction * fruit[2]
print(f"装入 {fruit[0]} 的部分,重量:{fraction * fruit[1]}kg,价值:{fraction * fruit[2]}")
break
print(f"总重量:{weight}kg,总价值:{value}")
if __name__ == "__main__":
fruits = [
("苹果", 15, 300),
("香蕉", 18, 180),
("橘子", 10, 150),
("猕猴桃", 9, 270)
]
backpack= 20
knapsack(fruits, backpack)