算法:老鼠走迷宫问题
算法:老鼠走迷宫问题(初)
【写在前面】
老鼠走迷宫问题的递归实现,是对递归思想的一种应用。
【问题描述】
给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图。给定入口位置和出口位置,判断之间是否存在通路并显示出走出迷宫的道路。
【代码】
对题目的描述部分
int migo[7][7]={ {2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 2, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2}};//迷宫图int startX=1,startY=1;
int endX=5,endY=5;
说明:
1.给出用来描述迷宫信息的数组。
2.给出入口和出口坐标。
递归的实现部分
int flag=0;int find(int x,int y) {migo[x][y]=1;if(x==endX&&y==endY)flag=1;if(migo[x][y+1]==0&&flag!=1)find(x,y+1);if(migo[x][y-1]==0&&flag!=1)find(x,y-1);if(migo[x+1][y]==0&&flag!=1)find(x+1,y);if(migo[x-1][y]==0&&flag!=1)find(x-1,y);if(flag!=1)migo[x][y]=0;return flag; }
说明:
1.第一句代码 migo[x][y]=1,意义何在呢?我们在开始处把它设为1,表示我们以此为轴开始朝四周移动,每到下一个点便再以之为轴,...不段进行判断,直达我们找到通路,即flag=1。但是我们需要明白的是,一旦我们沿某条路找不到通路时,最后一句代码
便又将其还原为0,在对迷宫的所有道路探索后,我们可能会找到通路,那条路上的每一个元素便会被赋予1,如果都没有,那就不会。
2.关于递归的思路:不断以某点为轴,向四处扩散,在找到出口点便停止递归。
道路展示实现部分
int main(int argc, char **argv) {int i,j;printf("显示迷宫:\n");for(i=0;i<7;i++){for(j=0;j<7;j++)if(migo[i][j]==2)printf("█");elseprintf(" ");printf("\n");}if(find(startX,startY)==0){printf("\n没有找到出口!\n");}else{printf("\n显示路径:\n");for(i=0;i<7;i++){for(j=0;j<7;j++){if(migo[i][j]==2)printf("█");else if(migo[i][j]==1)printf("*");elseprintf(" ");}printf("\n");}}return 0; }
转载于:https://www.cnblogs.com/MrSaver/p/5940386.html
算法:老鼠走迷宫问题相关推荐
- c语言老鼠迷宫程序,C语言经典算法——老鼠走迷宫(二)
说明 由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? 解法 求所有路径看起来复杂但其实更简单,只要在老鼠走至出口时显示经过的路径,然后退回上一格重新选择下一个位置 ...
- 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)
C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...
- C语言-老鼠走迷宫(深度寻路算法)
老鼠走迷宫-c语言(基于深度优先的寻路算法) 这个是学校的课设,刚开始有点头疼,但是感觉越做越有意思了,于是就有如下代码,可能相较于大佬还有差距,但是这是我目前所能做的最优的程序了吧! 话不多说,说一 ...
- C语言老鼠走迷宫(单路径)算法详细讲解
最近在学习C语言的一些经典算法,其中遇到了一点困难,导致卡进度了.琢磨了很久,在绘制流程图时,突然灵感大开理解了,老鼠走迷宫算法的奇妙.所以写了这个,一来是方便以后右和我类似的同学自学时,遇到这个问题 ...
- Java算法六:老鼠走迷宫
老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离. 问题解答: 实际上是使用回溯算 ...
- java老鼠走迷宫算法_老鼠走迷宫java算法
说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...
- c语言老鼠走迷宫课程设计,C语言算法之老鼠走迷宫
1.Algorithm Gossip: 老鼠走迷官(一)说明:老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法: ...
- 老鼠走迷宫---算法集
问题描述 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用 2 表示迷宫墙壁,使用 1 来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解决思路 老鼠的走法有上.左.下.右四个方向,在每前 ...
- C语言 老鼠走迷宫详解6,算法: Mazing-老鼠走迷宫
说明 老鼠走迷宫是递回求解的基本题型.我们在二维阵列中使用 2 表示迷宫墙壁,使用 1 来表示老鼠的行走路径,尝试以程式求由入口至出口的路径. 解法 老鼠可走上,下,左,右四个方向.入口一般在左上,出 ...
最新文章
- CentOS 7.0服务器安装配置LAMP服务器
- 数组中两个字符串的最小距离
- DL之DNN:利用numpy自定义三层结构+softmax函数建立3层完整神经网络全部代码实现(探究BP神经网络的底层思想)
- Shell Basic
- java 只显示文本文件_Java设计并实现一个应用程序,能够读取一个文本文件中的内容并显示,同时能够计算出文本中的行数。...
- MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
- 非多态的继承情况下,基类指针可以指向派生类对象么?
- 计算机vf的讲解,计算机二级vf重点知识讲解.doc
- php 3des 兼容java,java版3des加密程序,可与php兼容
- CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64
- Win10电脑关机后立即自动重启怎么办
- 解决显示“此图片来自微信公众平台未经允许不可引用”错误图片
- HDU 6232 Confliction
- 多源复制中单个channal复制异常处理
- 用R语言对网络数据进行统计分析(四)
- Verilog学习笔记HDLBits——Shift Registers
- 【翻译】(15)菜单
- npm报错 gyp: No Xcode or CLT version detected!
- YBT 1223 An Easy Problem
- 快应用之先写出第一个hello world
热门文章
- 用注解方式写定时任务
- win8改win7 教程
- 高并发网络架构解决方案分析
- linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...
- matlab save将变量值保存为mat
- tensorflow下载
- GDAL/ORG之Python获取与安装
- python入门if语句练习_python入门视频:09 if语句_练习.mp4
- garch模型python步骤_GARCH模型的建模步骤?
- matlab里插入行和列