障碍物迷宫-固定
‘’‘迷宫是固定的,走出来,同样上下左右,0没有障碍物,1 有障碍物’’’
from collections import deque
def migong():
dx=[1,0,-1,0]
dy=[0,1,0,-1]
maze1 = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
maze = [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 1, 0], [1, 1, 1, 0, 0], [0, 1, 0, 0, 1], [0, 1, 0, 0, 0]]
print("===============原迷宫==========")
for i in range(len(maze)):
for j in range(len(maze[i])):
print(maze[i][j],end=' ')
print()
q=deque([(0,0,0)])
maze[0][0] = 1
while len(q)>0:
p=q.popleft()
for i in range(4):
x=p[0]+dx[i]
y=p[1]+dy[i]
if x<0 or y<0 or x>len(maze)-1 or y> len(maze[0])-1 or maze[x][y] == 1:
continue
maze[x][y]=1
maze1[x][y]=p[2]+1
q.append((x, y, p[2] + 1))
if x==len(maze)-1 and y==len(maze[0])-1:
print("===============最终迷宫==========")
for i in range(len(maze1)):
for j in range(len(maze1[i])):
print(maze1[i][j], end=' ')
print()
return p[2]+1
return -1
print(migong())
总结
还是做的慢,这次没有用字典用了列表,感觉有那么一点感觉了。两个列表才完成的最后路径的表示,但是这个表示有点问题,把所有节点都表示出来了==,还是要改一下改成只要最佳路径。再做几题就可以带权重了。
障碍物,边界,走过的节点,都一回事,都是不能往下继续的。
python是真的好用,我觉得java我写不出来,等下写一个试试。
1、因为忘记给走过节点赋值,出现过错误
存在问题
1、改只显示最佳路径