Python程式:計算賣鞋收入


假設一家鞋店有n雙不同尺寸的鞋子,尺寸存放在名為size的陣列中,還有一個包含m個顧客需求的列表demand,其中demand[i]包含(鞋碼, 價格),表示顧客i需要鞋碼為shoe_size的鞋子,並且可以支付給定金額。我們需要計算店主透過銷售這些鞋子可以賺多少錢。

例如,如果輸入是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,因為:

  • 第一個顧客將以55元的價格購買尺碼為6的鞋子

  • 第二個顧客將以45元的價格購買尺碼為6的鞋子

  • 庫存中沒有尺碼為6的鞋子了

  • 第四個顧客將以40元的價格購買尺碼為4的鞋子

  • 第五個顧客將以60元的價格購買尺碼為18的鞋子

  • 第六個顧客將買不到鞋子,因為沒有尺碼為10的鞋子


總收入為55 + 45 + 40 + 60 = 200。


為了解決這個問題,我們將遵循以下步驟:

  • n := demand 的大小
  • sizes := 一個對映,包含基於鞋碼的鞋子數量
  • earn := 0
  • for i in range 0 to n - 1:
    • (sz, price) := demand[i]
    • 如果sizes中存在尺碼為sz的鞋子,則:
      • 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

更新於:2021年10月11日

瀏覽量:334

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.