Python程序查找销售鞋子所赚的金额
假设在一个鞋店里,有n双不同尺码的鞋子存在一个名为size的数组中,还有一个称为demand的m个顾客的配对清单列表,其中demand[i]包含(shoe_size, money), 因此 顾客 i需求尺码为shoe_size的鞋子,可以支付给定的金额money。我们要发现鞋店老板可以通过销售这些鞋子赚到多少钱。
因此,如果输入是shoes = [2,3,4,5,6,8,7,6,5,18] demand = [(6,55),(6,45),(6,55),(4,40),(18,60),(10,50)],那么输出将为200,因为
- 第1个人将花费55购买尺码为6的鞋子
-
第2个人将花费45购买尺码为6的鞋子
-
库存中没有6码的鞋子
-
第4个人将花费40元购买尺码为4的鞋子
-
第5个人将花费60元购买尺码为18的鞋子
-
第6个人将得不到鞋子,因为库存中没有10码鞋子
因此,总共赚了55+45+40+60 = 200
要解决这个问题,我们将遵循这些步骤:
- n := demand的长度
- sizes := 一个包含基于尺码的鞋子频率的映射
- earn := 0
- for i in range 0 to n – 1, do
- (sz, price) := demand[i]
- 如果有尺码为sz的鞋子存在sizes中,那么
- sizes[sz] := sizes[sz] – 1
- earn := earn + price
- return earn
示例
让我们看一下下面的实现以获得更好的理解:
from collections import Counter
def solve(shoes, demand):
n = len(demand)
sizes = Counter(shoes)
earn = 0
for i in range(n):
sz, price = demand[i]
if sizes[sz]:
sizes[sz] -= 1
earn += price
return earn
shoes = [2,3,4,5,6,8,7,6,5,18]
demand = [(6,55), (6,45), (6,55), (4,40), (18,60), (10,50)]
print(solve(shoes, demand))
输入
[2,3,4,5,6,8,7,6,5,18], [(6,55),(6,45),(6,55),(4,40),(18,60),(10,50)]
输出
200