首页 文章资讯内容详情

该程序查找需要支付给所有表现良好的Python的最低金额

2026-06-04 1 花语

假设我们给出了一个称为等级的数字列表,它显示了编码员的性能得分。现在,经理希望给每个编码器1000卢比,除非两个编码器相邻,他们希望向性能更好的编码器支付至少比性能较差的编码器至少高1000卢比。我们必须找到经理可以按照上述限制支付的最低金额。

因此,如果输入像等级=[1、2、5、1],那么输出将是7000,因为我们可以为每个编码器支付的最小值是[1000、2000、3000、1000]

为了解决这个问题,我们将遵循以下步骤-

pay:=与等级相同的尺寸列表,最初所有值均为1

对于范围在1到评级大小范围内的我-1

pay[i]:=pay[i-1]+1

如果等级[i]>等级[i-1],则

对于等级范围为-2到0的i,将其减小1,

pay[i]:=pay[i]和pay[i+1]+1的最大值

如果收视率[i]>收视率[i+1],则

回报(工资要素之和)*1000

让我们看下面的实现以更好地理解-

示例

class Solution: def solve(self, ratings): pay=[1 for _ in ratings] for i in range(1, len(ratings)): if ratings[i] > ratings[i-1]: pay[i] = pay[i-1]+1 for i in range(len(ratings)-2,-1,-1): if ratings[i] > ratings[i+1]: pay[i] = max(pay[i], pay[i+1]+1) return sum(pay)*1000 ob = Solution() ratings = [1, 2, 5, 1] print(ob.solve(ratings))

输入值

[1, 2, 5, 1]

输出结果

7000