代码:
goods=[(60,10),(100,20),(120,30)] #每个商品大价格和重量
goods.sort(key=lambda x:x[0]/x[1],reverse=True)
def fractional_backpack(goods,w):
m=[0 for _ in range(len(goods))]
total=0
for i,(prize,weight) in enumerate(goods):
if w>=weight:
m[i]=1
total+=prize
w-=weight
else:
m[i]=w/weight
total+=prize*m[i]
w=0
break
return m,total
print(fractional_backpack(goods,50))