題目沒說遇到相同距離時,該輸出哪一個停車位。
把
if parkdp[i + 1] > dis :
改
if parkdp[i + 1] >= dis :
就過了
from math import inf
while True:
n = int(input())
if n == 0:
break
park = [0] + [int(x) for x in input().split()]
parkdp = [0] + [inf for _ in range(n)]
dp = [[0] for _ in range(n+1)]
for i in range(0,n):
k = i
while True:
dis = (200 - park[i+1] + park[k]) ** 2 + parkdp[k]
if parkdp[i + 1] >= dis :
parkdp[i + 1] = dis
dp[i+1] = dp[k] + [i + 1]
if k == 0 :
break
k -= 1
print(" ".join(map(str,dp[-1])))