Нет необходимости в дополнительном состоянии move
.Также цель состоит в том, чтобы максимизировать.
Цель игры - сделать как можно больше ходов до окончания игры.
Psuedocode:
dp[i]
будет "Максимальное количество ходов, чтобы пересечь самый правый конец ряда квадратов от квадрата ih".Это будет -1
в случае, если его невозможно пересечь.
for square n..1:
dp[i] = -1
for all val in square i:
if square+val > n:
dp[i] = max(dp[i], 1)
continue
if dp[i+val] == -1:
continue
dp[i] = max(dp[i], 1 + dp[i+val])