Python 程序用于计算卖鞋能赚多少钱

pythonserver side programmingprogramming更新于 2025/12/19 7:08:17

假设在一家鞋店中,数组 size 中有 n 种不同尺寸的鞋子,数组名为 size,还有 m 个顾客的鞋子对列表,名为 demand,其中 demand[i] 包含 (shoe_size, money),因此需求为 i 的顾客需要一双尺寸为 shoe_size 的鞋子 并且他/她可以支付给定金额。我们必须找出店主通过出售这些鞋子可以赚多少钱。

因此,如果输入为鞋子 = [2,3,4,5,6,8,7,6,5,18] 需求 = [(6,55), (6,45), (6,55), (4,40), (18,60), (10,50)],则输出将为 200,因为

  • 第一个人将以成本 55 购买尺码 6 的鞋子

  • 第二个人将以成本 45 购买尺码 6 的鞋子

  • 库存中没有尺码 6 的鞋子

  • 第四个人将以成本 40 购买尺码 4 的鞋子

  • 第五个人将以成本60

  • 第六个人得不到鞋子,因为没有 10 号的鞋子


总收入 55 + 45 + 40 + 60 = 200。


为了解决这个问题,我们将遵循以下步骤 −

  • n := 需求量
  • sizes := 包含基于尺码的鞋子频率的地图
  • earn := 0
  • 对于 0 到 n - 1 范围内的 i,执行
    • (sz, price) := demand[i]
    • 如果 sizes 中存在尺码为 sz 的鞋子,则
      • sizes[sz] := size[sz] - 1
      • earn := earn + price
  • 返回 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

相关文章


有用资源