通过使用栈和递归实现迷宫的求解
def mazesolve(pos,record=None,exit1=None):
dir=[(0,1),(1,0),(-1,0),(0,-1)] #四个方向
for i in range(4):
maze[pos[0]][pos[1]] = 2 #走过的路用2标记
move=[pos[0]+dir[i][0],pos[1]+dir[i][1]]
if maze[move[0]][move[1]]==0:
pos=move #如果有路,则向前走
if pos == exit1: #若到达出口,则结束
print('arrived')
for i in range(12):
print(maze[i])
quit(0)
break
if 0 not in (maze[pos[0]+1][pos[1]], maze[pos[0]-1][pos[1]], maze[pos[0]][pos[1]+1], maze[pos[0]][pos[1]-1]):
#判断周围是否是死胡同
maze[pos[0]][pos[1]] = 2
pos=record.pop() #是的话返回上一个点
return mazesolve(pos, record,exit1)
else:
record.append(pos)
return mazesolve(pos,record,exit1)
if __name__=='__main__':
entry=[1,0]
exit1=[2,13]
maze=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[0,0,0,0,1,1,0,0,0,1,0,0,0,1],
[1,0,0,0,0,0,0,1,0,1,0,1,0,0],
[1,0,1,0,1,1,1,1,0,1,0,1,0,1],
[1,0,1,0,0,0,0,0,0,1,1,1,0,1],
[1,0,1,1,1,1,1,1,1,1,0,0,0,1],
[1,0,1,0,0,0,0,0,0,0,0,1,0,1],
[1,0,0,0,1,1,1,0,1,0,1,1,0,1],
[1,0,1,0,1,0,1,0,1,0,1,0,0,1],
[1,0,1,0,1,0,1,0,1,1,1,1,0,1],
[1,0,1,0,0,0,1,0,0,1,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
mazesolve(entry,[],exit1=exit1)
运行结果: