寻找我们可以在 Python 跳跃游戏中获得的最高分数的程序
假设我们有一个名为nums的数组和另一个值k。我们在索引0处。在一次移动中,我们最多可以向右跳k步,而不会超出数组的边界。我们想要到达数组的最终索引。对于跳跃,我们得到分数,即我们在数组中访问的每个索引j的所有nums[j]的总和。我们必须找到我们能得到的最高分。
所以,如果输入像nums=[1,-2,-5,7,-6,4]k=2,那么输出将是10,因为,我们按照这个序列[1,-2,7,4],那么我们将得到最大点,即10。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, k):
n = len(nums)
scores = [0] * n
scores[0] = nums[0]
currMax = scores[0]
max_pt = 0
if n < 1:
return 0
if n == 1:
return nums[-1]
for idx in range(1,n):
if max_pt >= idx - k:
if currMax < scores[idx-1] and idx > 0:
currMax = scores[idx-1]
max_pt = idx-1
else:
if idx - k > 0:
currMax = scores[idx-k]
max_pt = idx - k
for p in range(idx-k, idx):
if scores[p] >= currMax:
max_pt = p
currMax = scores[p]
scores[idx] = currMax + nums[idx]
scores[-1] = currMax + nums[-1]
return scores[-1]
nums = [1,-2,-5,7,-6,4]
k = 2
print(solve(nums, k))输入
[1,-2,-5,7,-6,4], 2输出结果
10