本题主要是利用 dfs 进行求解,给出的条件是任意起点,则 matrix 中等于 word[0] 的均可作为路径的起点,同时每次访问需要记录已经过的节点,需要注意的是上一次的已访问节点不会影响下一次的访问,所以在本次访问中,若没有找到完整路径需将已访问节点恢复初始状态;
代码如下:
def hasPath(self , matrix , word ):
# write code here
def dfs(visited, x, y, s):
if s == len(word):
return True
if x < 0 or x >= m or y < 0 or y >= n or visited[x][y] or matrix[x][y] != word[s]:
return False
visited[x][y] = True
for di, dj in dirs:
xi, yj = x + di, y + dj
if dfs(visited, xi, yj, s + 1):
return True
visited[x][y] = False
m, n = len(matrix), len(matrix[0])
visited = [[False for _ in range(n)] for _ in range(m)]
dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)]
for i in range(m):
for j in range(n):
if matrix[i][j] == word[0]:
if dfs(visited, i, j, 0):
return True
return False
京公网安备 11010502036488号