网站首页 > 资源文章 正文
本实战技能模拟迷宫问题的求解,在迷宫某处放一大块奶酪,把一只老鼠放入迷宫。迷宫以二维数组表示,0表示墙,1表示老鼠可以移动的路径。老鼠不能离开迷宫或翻墙,从用户指定的位 置开始移动,判断老鼠是否能走出迷宫。
该实战技能要求输入老鼠出发的起始位置,输出老鼠是否能走出迷宫的结果。运行程序得 到的结果如下图所示。
老鼠走迷宫结果展示
【技术要点】
本实战技能的技术难点在于回溯法的运用。回溯法的原理,即发现当前的候选解不可能是解 时,就放弃它而选择下一个候选解。如果当前的候选解除了不满足问题的要求外,其他所有要求都已满足,则扩大当前候选解的规模继续试探。
如果当前的候选解满足了问题的所有要求,则这个候选解将成为问题的一个解。
在求解本案例迷宫问题的过程中,如果发现老鼠进入死胡同,就回溯一步或多步,寻找其他路径。
【主体设计】
利用回溯法实现老鼠走迷宫的流程如下图所示。
老鼠走迷宫实现流程图
实现老鼠走迷宫具体通过以下3个步骤实现。
Step1:设定一个迷宫地图,即一个二维数组,1为可以行走的路,0为不能行走的路。
Step2:判断当前方向是否可以走,若不行则回溯到上一步,将走过的路标记为2;若可以则判 断是否到达终点,没有则继续走,直到没有路可以走。
Step3:判断老鼠是否走到终点,若没有到达终点,则输出“走不出迷宫”,否则输出“成功走出迷宫”。
【编程实现】
本实战技能使用PyCharm工具进行编写,建立相关的源文件【老鼠走迷宫.py】,在界 面输入代码。参考下面的详细步骤,编写具体代码,具体步骤及代码如下所示。
Step1:创建一个列表作为迷宫的地图,代码如下所示。
1. maze = [[1, 1, 0, 1, 0, 1],
2. [1, 1, 1, 0, 1, 0],
3. [0, 0, 1, 0, 1, 0],
4. [0, 1, 1, 1, 0, 0],
5. [0, 0, 0, 1, 1, 0],
6. [1, 0, 0, 0, 0, 0]]
Step2:定义map( )函数,确保老鼠不会走出迷宫的范围并且判断当前这条路是否通畅,代码如下所示。
1. def map(maze, x, y):
2. if (x >= 0 and x < len(maze) and y >= 0 and y < len(maze[0]) and maze[x][y] == 1):
3. return True
4. else:
5. return False
Step3:定义一个move( )函数,此函数有两个功能,一是用来判断老鼠是否走出迷宫;二是用 来模拟老鼠的行走路径。为了防止老鼠原路返回,将走过的路标记为2,代码如下所示。
1. def move(maze, x, y):
2. if(x == 0 and y == 0):
3. print(" 能够走出迷宫 ") # 判断是否走到迷宫出口
4. return True
5. if map(maze, x, y):
6. maze[x][y] = 2 # 防止原路返回
7. if not move(maze, x-1, y): # 对四个方向进行试探,判断哪个方向可以走,
8. # 如果都不行则撤回
9. maze[x][y] = 1
10. elif not move(maze, x, y - 1):
11. maze[x][y] = 1
12. elif not move(maze, x + 1, y):
13. maze[x][y] = 1
14. elif not move(maze, x, y + 1):
15. maze[x][y] = 1
16. else:
17. return False
18. return True
Step4:接收用户定义的老鼠的起点位置,输出是否能够走出迷宫,代码如下所示。
1. print(" 老鼠走迷宫案例 ")
2. a = int(input(" 起始位置的行坐标 :"))
3. b = int(input(" 起始位置的列坐标 :"))
4. move(maze, a, b)
5. if maze[0][1] == 1 and maze[1][0] == 1:
6. print(" 走不出迷宫 ") # 判断第 0 行和第 1 列或者第 1 行和第 0 列是否为 1,
7. # 若为 1 说明已经到达终点,若不为 1 则未到达终点
猜你喜欢
- 2024-09-29 电脑鼠走迷宫比赛 没有兴趣就没有精神
- 2024-09-29 仓鼠被困迷宫 聪明鼠完美“逃狱”
- 2024-09-29 屈老师大班体育游戏教案《迷宫-猫捉老鼠》
- 2024-09-29 从零学起,用Excel VBA编程训练“人工智能老鼠”走迷宫(二)
- 2024-09-29 网友竟然做迷宫给老鼠!没想到接下来就翻墙「老子不玩啦」
- 2024-09-29 老鼠走迷宫 挺6啊。。。但这智商...
- 2024-09-29 "爱情谜题大挑战:生肖鼠情缘迷宫,你能否解开隐藏的真爱线索?"
- 2024-09-29 scratch新手教程第13课:制作小老鼠“迷宫寻油”的小游戏
- 2024-09-29 矿区中一种走迷宫电老鼠的研究与实现
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)