题目:
全部代码:
n = int(input())
#模拟地图
mMap = [list(input().split()) for _ in range(n)]
#标记是否访问过、访问过为True未访问过为False
mVis = [[False for _ in range(n)] for _ in range(n) ]
mVis[0][0] = True
#模拟在图中上下左右走
xMove = [-1,1,0,0]
yMove = [0,0,1,-1]
#队列记录坐标和走到的次数
queue = [[0,0,0]]
while queue:
#当走到了b点退出广搜、打印走的次数
if mMap[queue[0][0]][queue[0][1]] == 'B':
print(queue[0][2])
break
for i in range(4):
dx = queue[0][0] + xMove[i]
dy = queue[0][1] + yMove[i]
if dx>=0 and dx<=n-1 and dy>=0 and dy<=n-1:
if not mVis[dx][dy] and mMap[queue[0][0]][queue[0][1]] != mMap[dx][dy]:
'''没有访问过并且不是连续的走-和+就可以将点加入队列'''
queue.append([dx,dy,queue[0][2]+1])
mVis[dx][dy] = True
queue.pop(0)
if len(queue) == 0:
"""队列为空说明走不到B点"""
print("-1")