問題
マスの中に書いてある数字だけ前に進むとすると、最後まで到達できるかどうかを確認するアルゴリズム。
例えば下のマスであれば、 4 -> 4 -> 2-> 1 -> 1 と進むことで最後まで到達できる。
| 4 | 4 | 1 | 0 | 0 | 2 | 0 | 1 | 1 |
下のマスは到達できない。
| 4 | 4 | 1 | 0 | 0 | 0 | 2 | 1 | 1 |
コード
- マスをリストにして考える。
- 最も遠くまで到達することのできるマスを考え、for ループでそのマスを更新していく。
def is_reachable_last_index(A):
furthest_index = 0
last_index = len(A) - 1
for i in range(last_index):
if i <= furthest_index and furthest_index < last_index:
furthest_index = max(furthest_index, A[i] + i)
return furthest_index >= last_index
A1 = [4, 4, 1, 0, 0, 2, 0, 1, 1]
print(is_reachable_last_index(A1))
A2 = [4, 4, 1, 0, 0, 0, 2, 1, 1]
print(is_reachable_last_index(A2))