Python程式:計算商店商品最終價格(含特殊折扣)


假設我們有一個名為prices的陣列,其中prices[i]表示商店中第i件商品的價格。商店正在進行一項特別優惠活動:如果購買第i件商品,則將獲得等值於prices[j]的折扣,其中j是最小索引,滿足j > i且第j件商品的價格小於或等於第i件商品的價格(即prices[j] <= prices[i]),否則,將不會獲得任何折扣。我們需要找到一個數組,其中第i個元素是考慮到特殊折扣後,我們將為商店的第i件商品支付的最終價格。

因此,如果輸入類似於prices = [16,8,12,4,6],則輸出將為[8, 4, 8, 4, 6],因為商品0的價格為16,所以我們將獲得等值於prices[1]=8的折扣,然後最終價格將為16 - 8 = 8。對於商品1,price[1]為8,我們將獲得等值於prices[3]=4的折扣,因此我們將支付的最終價格為8 - 4 = 4。對於價格為12的商品2,我們將獲得與prices[3] = 4相同的折扣值,因此我們將支付的最終價格為12 - 4 = 8。對於商品3和4,我們將不會獲得任何折扣。

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

  • 對於從0到prices大小的範圍內的i:

    • 對於從i+1到prices大小的範圍內的j:

      • 如果prices[i] >= prices[j],則:

        • prices[i] := prices[i] - prices[j]

        • 退出迴圈

      • 否則:

        • j := j + 1

  • 返回prices

示例(Python)

讓我們看看下面的實現,以便更好地理解:

 線上演示

def solve(prices):
   for i in range(len(prices)):
      for j in range(i+1,len(prices)):
         if(prices[i]>=prices[j]):
            prices[i]-=prices[j]
            break
         else:
            j+=1
   return prices

prices = [16,8,12,4,6]
print(solve(prices))

輸入

[16,8,12,4,6]

輸出

[8, 4, 8, 4, 6]

更新於:2021年5月17日

938 次瀏覽

開啟你的職業生涯

完成課程獲得認證

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