【华为OD】跳格子3
题目描述
小明和朋友们一起玩跳格子游戏,
每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],
从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。
https://www.nowcoder.com/discuss/617127440694927360
解法
动态规划+大顶堆
from queue import PriorityQueue
arr = [1, -1, -6, 7, -17, 7]
dp = [0, 0, 0, 0, 0, 0]
k = 2
q= PriorityQueue()
for i in range(len(arr)):
maxnum = 0 if q.empty() else -q.queue[0]
dp[i] = arr[i] + maxnum
q.put(-dp[i])
if i-k>=0:
q.queue.remove(-dp[i-2])
print(dp)
浙公网安备 33010602011771号