class GreedyItem:
def __init__(self, name, weight, value):
self.name = name
self.totalWeight = weight
self.totalValue = value
def packBean(packCapacity, items):
beans = []
items.sort(key=lambda x: x.totalValue / x.totalWeight, reverse=True)
leftPackCapacity = packCapacity
for item in items:
if leftPackCapacity > item.totalWeight:
leftPackCapacity -= item.totalWeight
beans.append(GreedyItem(item.name, item.totalWeight, item.totalValue))
else:
unitPrice = item.totalValue / item.totalWeight
packWeight = leftPackCapacity
packValue = packWeight * unitPrice
beans.append(GreedyItem(item.name, packWeight, packValue))
leftPackCapacity = 0
break
return beans
def test():
items = [
GreedyItem("苹果", 15, 300),
GreedyItem("香蕉", 18, 180),
GreedyItem("桔子", 10, 150),
GreedyItem("猕猴桃", 9, 270)
]
beans = packBean(20, items)
maxValue = 0
print("装了如下物品:")
for bean in beans:
maxValue += bean.totalValue
print(bean.name + " " + str(bean.totalWeight))
print("总价值:" + str(maxValue))
if __name__ == "__main__":
test()