假设我们有一个名为价格的数组,其中价格 [i] 表示商店中第 i 件商品的价格。有一个特价正在进行中,如果我们购买第 i 件商品,那么我们将获得等价于价格 [j] 的折扣,其中 j 是最小指数,使得 j > i 并且第 j 件商品的价格小于或等于第 i 个项目(即价格[j] <=价格[i]),否则我们将不会获得任何折扣。我们必须找到一个数组,其中第 i 个元素是考虑到特殊折扣我们将为商店的第 i 件商品支付的最终价格。
所以,如果输入像价格 = [16,8,12,4,6],那么输出将是 [8, 4, 8, 4, 6],因为 item0 的价格是 16,所以我们会得到一个折扣等价于价格[1]=8,那么,最终价格将是 8 - 4 = 4。对于商品 1,价格 [1] 是 8,我们将收到价格等价于价格 [3]=2 的折扣,因此,最终我们将支付的价格为 8 - 4 = 4。对于价格 [2] 为 12 的商品 2,我们将获得与价格 [3] = 4 相同的折扣值,因此,我们将支付的最终价格为 12 - 4 = 8. 对于第 3 项和第 4 项,我们将不会获得任何折扣。
让我们看看以下实现以获得更好的理解 -
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]