迷宫问题:把传入的矩阵matrix,扩成每行每列各三个matrix(共9个)的大矩阵,从最左上角的小matrix中的‘S’出发,沿可走的路径寻找,如果能找找到其它的‘S’,则是通的,s出发就能到无穷多位置 import numpy as np def s_location(matrix):#定位S在矩阵中位置     for i in range(len(matrix)):         if 'S' in matrix[i]:             j = matrix[i].index('S')             return [i, j] def findanother_S(matrix, i, j):#在大矩阵中沿可通过路径寻找其它S,若找到则说明是连通的     if i<0 or i>=len(matrix) or j<0 or j>= len(matrix) or matrix[i][j] == '#':         return False     if matrix[i][j] == 'S':         return True     if findanother_S(matrix, i + 1, j):         print(i+1, j)         return True     if findanother_S(matrix, i - 1, j):         print(i-1, j)         return True     if findanother_S(matrix, i, j + 1):         print(i, j+1)         return True     if findanother_S(matrix, i, j - 1):         print(i, j-1)         return True     return False def isok(matrix):#判断matrix矩阵中S是否可以到达无穷多位置     i, j = s_location(matrix)  # i,j     matrix = np.array(matrix)#把matrix变成每行、每列各3个(共九个)matrix的大矩阵     matrix = np.concatenate([matrix] * 3, axis=1)     matrix = np.concatenate([matrix] * 3, axis=0)     matrix[i][j] = '#'     print(matrix)     if findanother_S(matrix, i + 1, j):         print(i+1,j)         return True     if findanother_S(matrix, i - 1, j):         print(i-1,j)         return True     if findanother_S(matrix, i, j + 1):         print(i,j+1)         return True     if findanother_S(matrix, i, j - 1):         print(i,j-1)         return True     print(i,j)     return False if __name__== '__main__':     matrix1 = [['S', '#'], ['#', '.']]     matrix2 = [['.', '.', '.'], ['#', '#', '#'], ['#', 'S', '#']]     result = isok(matrix2)     print(result)
点赞 2

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
牛客网
牛客企业服务