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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告