Python程序查找销售鞋子所赚的金额

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程