赞
踩
真题目录:真题目录(D卷 + C卷 + B卷 + A卷) + 考点说明
必刷专栏:最新2024华为OD机试(Java/JS/Py/C/C++)+ OJ
在线OJ :点击立即刷题,模拟真实机考环境
华为OD面试真题精选:华为OD面试真题精选
小明和朋友们一起玩跳格子游戏,每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],
从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。
第一行输入总的格子数量 n
第二行输入每个格子的分数 score[i]
第三行输入最大跳的步长 k
输出最大得分
格子的总长度 n 和步长 k 的区间在 [1, 100000]
每个格子的分数 score[i] 在 [-10000, 10000] 区间中
输入
6
1 -1 -6 7 -17 7
2
输出
14
在给定的跳格子游戏中,我们使用动态规划方法来计算每个格子可能达到的最大得分。动态规划的核心在于解决子问题并利用这些子问题的解来解决整个问题。
设 dp[i]
表示到达第 i
个格子时能得到的最大分数,则 dp[i]
可以通过以下方式计算:
dp[i] = max(dp[j]) + score[i] for j in range(max(0, i-k), i)
这里,max(0, i-k)
到 i-1
表示从当前位置 i
往回看,最远可以从 i-k
跳到 i
。如果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。