使用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的折扣,那么,最终价格将是8-4 = 4。对于物品1,价格[1]是8,我们将获得相当于prices [3] = 2的折扣,因此,我们将支付的最终价格为8-4 = 4。对于价格[2]为12的物品2,我们将获得与价格[3] = 4相同的折扣值,因此,我们将支付的最终价格为12-4 = 8。对于物品3和4,我们将不会获得任何折扣。
为了解决这个问题,我们将遵循以下步骤:
- 对于i在0到prices的大小的范围内,做以下操作
- 对于j在i + 1到prices的大小的范围内,执行以下操作
- 如果prices[i] >= prices[j],那么
-
prices[i] := prices[i] – prices[j]
-
跳出循环
-
否则,
-
j := j + 1
- 对于j在i + 1到prices的大小的范围内,执行以下操作
-
返回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]