6、老鼠走迷宫(简单,非最短路径)_python版本

最近看到一个新问题,老鼠走迷宫,原题是c版本的,想写成python版本。一个简单迷宫的实现,当中还有很多问题,一步一步来吧,人笨慢慢学习。

说明:
老鼠走迷宫是递归求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1表示老鼠行走的路径,试以程
式求出由入口至出口的路径。

解法:
老鼠的走法有上,下,左,右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回上一步选择下一个可前
进方向,如此在阵列中依序测试四个方向,知道走到出口为至。
这是返回的基本题,请直接看程式应就可以理解
*/


从网上搜了一下,网上很多版本,大多都是反复递归,出栈和调用,比较复杂,慢慢学习吧,上一个简单版本,思路来自sinly100,看原版请移步。

看代码切记一行行读下去,看代码每一行的作用对象,理解含义,平时一目十行的阅读方式不是初学者的方法。



这是一个5 * 5数组排列: 

 我们设计一个迷宫:

注意此迷宫就一条通路,我们先来检验一下自己的设计思路。

1、用一个

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以为您提供以下Python代码示例,用于解决迷宫问题并找到所有路径: ```python def find_path(maze, x, y, path): # 获取迷宫的行数和列数 rows = len(maze) cols = len(maze[0]) # 判断当前位置是否越界或者已经在路径中 if x < 0 or x >= rows or y < 0 or y >= cols or maze[x][y] == '#' or (x, y) in path: return False # 将当前位置加入路径中 path.append((x, y)) # 如果已经到达终点,则输出路径 if maze[x][y] == 'E': print(path) return True # 向上、下、左、右四个方向进行递归查找 if find_path(maze, x-1, y, path): return True if find_path(maze, x+1, y, path): return True if find_path(maze, x, y-1, path): return True if find_path(maze, x, y+1, path): return True # 如果四个方向都没有找到路径,则回溯 path.pop() return False # 测试代码 if __name__ == '__main__': maze = [ ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#'], ['#', '.', '.', '.', '#', '.', '.', '.', '.', '#'], ['#', '.', '#', '.', '#', '.', '#', '#', '.', '#'], ['#', '.', '#', '.', '.', '.', '.', '.', '.', '#'], ['#', '.', '#', '#', '#', '.', '#', '#', '.', '#'], ['#', '.', '.', '.', '#', '.', '.', '.', '.', '#'], ['#', '#', '#', '.', '#', '#', '#', '#', '.', '#'], ['#', '.', '.', '.', '.', '.', '.', '.', '.', '#'], ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#'] ] find_path(maze, 1, 1, []) ``` 在上述代码中, `maze` 表示迷宫,其中 `#` 表示障碍物,`.` 表示可到达的空格, `S` 表示起点, `E` 表示终点。`find_path` 函数用于查找从起点到终点的所有路径,并输出这些路径。 希望这个代码示例能够解决您的问题,如果您有任何其他问题,请随时询问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值