关注
 迷宫问题:把传入的矩阵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
相关推荐
09-04 22:37
  电子科技大学 算法工程师   点赞 评论 收藏   
分享
 09-04 20:20
  门头沟学院 运营   点赞 评论 收藏   
分享
 牛客热帖
更多 
 正在热议
 更多 
 # 校招生月薪1W算什么水平 #
 22322次浏览 148人参与
# 硬件人的简历怎么写 #
 310948次浏览 3055人参与
# “vivo”个offer #
 34684次浏览 270人参与
# 我是面试官,请用一句话让我破防 #
 19991次浏览 112人参与
# 中美关税战对我们有哪些影响 #
 39992次浏览 342人参与
# i人适合做什么工作 #
 8937次浏览 84人参与
# 快手技术岗信息交流阵地 #
 16321次浏览 82人参与
# 华为保温 #
 104007次浏览 397人参与
# 如果秋招能重来,我会____ #
 31939次浏览 266人参与
# 哪些行业值得去? #
 3548次浏览 43人参与
# 机械人,签完三方你在忙什么? #
 64880次浏览 243人参与
# 牛友们,签完三方你在忙什么? #
 118987次浏览 957人参与
# 苦尽甘来时,再讲来时路 #
 28205次浏览 405人参与
# 华为池子有多大 #
 108464次浏览 750人参与
# 读研or工作,哪个性价比更高? #
 76020次浏览 766人参与
# 如果上班像打游戏,你最想解锁什么技能 #
 6313次浏览 64人参与
# 美团开奖 #
 195430次浏览 1043人参与
# 为了实习逃课值吗? #
 25054次浏览 228人参与
# 大家实习每天都在干啥 #
 97623次浏览 536人参与
# 秋招许愿,本周能____ #
 24958次浏览 212人参与
# 秋招什么时候开投比较合适? #
 110252次浏览 807人参与
# 小厂实习有必要去吗 #
 70422次浏览 346人参与
 投递携程等公司10个岗位
投递携程等公司10个岗位