题解 | #矩阵中的路径#

矩阵中的路径

http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

本题主要是利用 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
全部评论

相关推荐

往年强度是有多大.....&nbsp;“远超预期难度”害怕....
中午吃什么?:大疆是海笔,靠笔试刷人
投递大疆等公司10个岗位
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务