寻找我们可以在 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