-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathminJump.py
31 lines (24 loc) · 842 Bytes
/
minJump.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def minJumpRec(arr, startIndex, endIndex):
if startIndex == endIndex:
return 0
elif arr[startIndex] == 0:
return -1
else:
minJump = 9999999999999
for i in range(startIndex + 1, endIndex + 1):
if i < startIndex + arr[startIndex] + 1:
minJump = 1 + min(minJump, minJumpRec(arr, i, endIndex))
return minJump
def minJumpDp(arr, n):
jumps = [0 for i in range(n)]
for i in range(1, n):
jumps[i] = 9999999999999
for j in range(i):
if i <= j + arr[j]:
jumps[i] = min(jumps[i], jumps[j] + 1)
return jumps[n - 1]
if __name__ == "__main__":
for _ in range(int(input())):
n = int(input())
arr = list(map(int, input().split()))
print(minJumpDp(arr, n))