前言:此篇文章只是小菜鸟的自我练习,如有错误还请大家指出!
迷宫问题一直是一个十分经典的问题,其中涉及了一些深度优先搜索和广度优先搜索的知识,说白了其无非就是两个待解决的问题,一是如何找到出路,而是如何找到最短出路?
迷宫问题
问题一:迷宫的出路(用栈来解决问题)
如图,这是一个迷宫,首先我们需要用二位列表模拟出一个迷宫,墙(即走不通的地方)标记为1,能走的路标记为0,代码如下图所示:
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 1, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 1, 1, 0, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
] # 迷宫的构建
由于问题只需要我们找到出路即可,并不需要找到路最短的出路,因此我们选择使用深度优先遍历思想,即每走到一个点时,就判断其四个方向的位置是否能走,若有一个能走,就前往那个方向,直到找到出路,或者是这条路走到死胡同,同时每走一步都需要将走过的路标记为2,方便走到死胡同或