思路:动态规划
N = 7
P = 0
# MaxDis = [10, 0, 2, 1, 1, 0, 1]
# MaxDis = [2, 0, 1, 1, 1, 1, 1]
MaxDis = [5, 0, 5, 1, 1, 1, 1]
# dp[i] 代表当前点到终点的最小跳跃次数
dp = [0 for i in range(0, len(MaxDis))]
for i in range(len(MaxDis)-1, P-1, -1):
if MaxDis[i] == 0:#当前点为悬崖,则从当前点无法达到终点
dp[i] = -1
elif i + MaxDis[i] >= len(MaxDis):#从当前点一步即可到达终点
dp[i] = 1
else:
step = []
for j in range(i+1, i+MaxDis[i]+1):
if dp[j] != -1:
step.append(dp[j])
if len(step) > 0:
dp[i] = min(step) + 1
else:
dp[i] = -1
print(dp)