# -*- coding:utf-8 -*-
class Solution:
def hasPath(self, matrix, rows, cols, path):
# write code here
visited=[False for i in range(rows*cols)]
if not matrix or rows<1 or cols<1 or not path:
return False
for r in range(rows):
for c in range(cols):
if self.dp(matrix,rows, cols, r, c, path,0,visited):
return True
return False
def dp(self, matrix, rows, cols, r, c,path,index,visited):
if index>=len(path):
return True
haspath=False
if r>=0 and r<rows and c>=0 and c<cols and path[index]==matrix[r*cols+c] and not visited[r*cols+c]:
index+=1
visited[r*cols+c]=True
haspath=self.dp(matrix, rows, cols, r-1, c,path,index,visited) or self.dp(matrix, rows, cols, r+1, c,path,index,visited)or self.dp(matrix, rows, cols, r, c-1,path,index,visited) or self.dp(matrix, rows, cols, r, c+1,path,index,visited)
if not haspath:
index-=1
visited[r*cols+c]=False
return haspath