题目描述
小明和朋友们一起玩跳格子游戏,每个格子上有特定的分数 score[] =[1 -1-6 7 -17 7],从起点score[0]开始,每次最大的步长为 k,请你返回小明跳到终点score[n-1]时,能得到的最大得分。 注意: 格子的总长度和步长的区间在[1,100000] 每个格子的分数在 [-1000e,10008]区间中
输入描述
第一行输入总的格子数量
6
第二行输入每个格子的分数 score[]
1 -1 -6 7 -17 7
第三行输入最大跳的步长k
2
输出描述
跳到终点时,能得到的最大得分。
示例一
输入
6
1 -1 -6 7 -17 7
2
输出
14
示例二
输入
10
1 2 3 -2 3 4 5 -10 10 1
3
输出
29
def max_score(nums, k):
n = len(nums)
if n == 1:
return nums[0]
dp = [0] * n
dp[0] = nums[0]
for i in range(1, n):
max_val = float('-inf')
for j in range(1, k + 1):
if i - j >= 0:
max_val = max(max_val, dp[i - j])
dp[i] = max_val + nums[i]
return dp[-1]
n = int(input())
scores = list(map(int, input().split()))
k = int(input())
print(max_score(scores, k))