Min Steps in a matrix

Rippling OA
 avatar
user_4874964657
python
2 years ago
562 B
2
Indexable
import sys 
n,m=[int(i) for i in input().split()]
mat=[]
for i in range(n):
    l=[int(i) for i in input().split()]
    mat.append(l)
vis=[[-1]*m for i in range(n)]
dp=[[9999999]*m for i in range(n)]
def min_steps(i,j):
    if i==n-1 and j==m-1:
        return 0 
    if i>n-1 or j>m-1:
        return 9999999 
    
    if vis[i][j]!=-1:
        return dp[i][j]
    vis[i][j]=0 
    
    dp[i][j]=1+min(min_steps(i+mat[i][j],j),min_steps(i,j+mat[i][j])) 
    
    return dp[i][j]

res=min_steps(0,0)
print(dp)
if res>=9999999:
    print(-1) 
else:
    print(res)
Editor is loading...