关注
def bfs(grid, begin, end):
'''
bfs方法能求得最短路径
:param grid:
:param begin:
:param end:
:return:
'''
n= len(grid)
seen = []
dx = [1, 0, -1, 0] # 四个方位
dy = [0, 1, 0, -1]
level = []
level.append(begin)
seen.append(begin)
step = 0
while level:
queue = []
step += 1
for q in level:
for i in range(4):
nx, ny = q[0] + dx[i], q[1] + dy[i]
if 0 <= nx < n and 0 <= ny < n and grid[nx][ny] != '#':
if [nx, ny ] in end:
return step
if [nx, ny] not in queue and [nx, ny] not in seen:
queue.append([nx, ny])
seen.append([nx, ny])
level = queue
print(level)
return -1
if __name__ == '__main__':
n = int(input())
grid = [['' for _ in range(n)] for _ in range(n)]
g3 = []
begin = []
end = []
# 复制9块迷宫 从中间那块迷宫的起点'S'出发,直到到达任意9块迷宫中的'E'
for i in range(n):
s = input()
g3.append(s*3)
grid[i] = list(s)
if 'S' in s:
begin.append(i+n)
begin.append(s.index('S')+n)
if 'E' in s:
for x in range(0,2*n+1,n):
for y in range(0,2*n+1,n):
end.append([i + x,s.index('E') + y])
maze = []
for i in range(3):
for j in range(len(g3)):
maze.append(g3[j])
print(bfs(maze, begin, end)) 考试完后想到的一种思路: 1、将复制9块迷宫图组装在一起 2、从中间迷宫图的起点到达任意迷宫图的终点即为到达终点,步进方式用bfs
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
6660次浏览 96人参与
# 机械人避雷的岗位/公司 #
41831次浏览 279人参与
# 程序员找工作至少要刷多少题? #
12290次浏览 195人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1099次浏览 38人参与
# 我现在比当时_,你想录用我吗 #
5386次浏览 80人参与
# 过年最难忘的一件事 #
23047次浏览 174人参与
# 你最满意的offer薪资是哪家公司? #
69468次浏览 349人参与
# 为了减少AI幻觉,你注入过哪些设定? #
2538次浏览 94人参与
# 牛客AI体验站 #
4620次浏览 141人参与
# AI Coding的使用心得 #
3400次浏览 89人参与
# 找工作的破防时刻 #
253002次浏览 1960人参与
# 刚入职的你踩过哪些坑 #
5237次浏览 110人参与
# 一张图晒一下你的AI员工 #
3560次浏览 81人参与
# 论秋招对个人心气的改变 #
7048次浏览 124人参与
# 关于春招/暑期实习,你想知道哪些信息? #
5248次浏览 96人参与
# 黄金这个事上,你学到了什么 #
1206次浏览 36人参与
# 机械人你知道哪些单休企业 #
85375次浏览 428人参与
# 程序员能干到多少岁? #
6617次浏览 100人参与
# 晒晒你司的新年福利 #
5274次浏览 80人参与
# 关于提前批我想问 #
267357次浏览 2303人参与

查看4道真题和解析