算法:老鼠走迷宫问题(初)

【写在前面】

  老鼠走迷宫问题的递归实现,是对递归思想的一种应用。

【问题描述】

  给定一个二维数组,数组中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

算法:老鼠走迷宫问题相关推荐

  1. c语言老鼠迷宫程序,C语言经典算法——老鼠走迷宫(二)

    说明 ​由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? ​解法 ​求所有路径看起来复杂但其实更简单,只要在老鼠走至出口时显示经过的路径,然后退回上一格重新选择下一个位置 ...

  2. 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)

    C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...

  3. C语言-老鼠走迷宫(深度寻路算法)

    老鼠走迷宫-c语言(基于深度优先的寻路算法) 这个是学校的课设,刚开始有点头疼,但是感觉越做越有意思了,于是就有如下代码,可能相较于大佬还有差距,但是这是我目前所能做的最优的程序了吧! 话不多说,说一 ...

  4. C语言老鼠走迷宫(单路径)算法详细讲解

    最近在学习C语言的一些经典算法,其中遇到了一点困难,导致卡进度了.琢磨了很久,在绘制流程图时,突然灵感大开理解了,老鼠走迷宫算法的奇妙.所以写了这个,一来是方便以后右和我类似的同学自学时,遇到这个问题 ...

  5. Java算法六:老鼠走迷宫

    老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离. 问题解答: 实际上是使用回溯算 ...

  6. java老鼠走迷宫算法_老鼠走迷宫java算法

    说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...

  7. c语言老鼠走迷宫课程设计,C语言算法之老鼠走迷宫

    1.Algorithm Gossip: 老鼠走迷官(一)说明:老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法: ...

  8. 老鼠走迷宫---算法集

    问题描述 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用 2 表示迷宫墙壁,使用 1 来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解决思路 老鼠的走法有上.左.下.右四个方向,在每前 ...

  9. C语言 老鼠走迷宫详解6,算法: Mazing-老鼠走迷宫

    说明 老鼠走迷宫是递回求解的基本题型.我们在二维阵列中使用 2 表示迷宫墙壁,使用 1 来表示老鼠的行走路径,尝试以程式求由入口至出口的路径. 解法 老鼠可走上,下,左,右四个方向.入口一般在左上,出 ...

最新文章

  1. CentOS 7.0服务器安装配置LAMP服务器
  2. 数组中两个字符串的最小距离
  3. DL之DNN:利用numpy自定义三层结构+softmax函数建立3层完整神经网络全部代码实现(探究BP神经网络的底层思想)
  4. Shell Basic
  5. java 只显示文本文件_Java设计并实现一个应用程序,能够读取一个文本文件中的内容并显示,同时能够计算出文本中的行数。...
  6. MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
  7. 非多态的继承情况下,基类指针可以指向派生类对象么?
  8. 计算机vf的讲解,计算机二级vf重点知识讲解.doc
  9. php 3des 兼容java,java版3des加密程序,可与php兼容
  10. CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64
  11. Win10电脑关机后立即自动重启怎么办
  12. 解决显示“此图片来自微信公众平台未经允许不可引用”错误图片
  13. HDU 6232 Confliction
  14. 多源复制中单个channal复制异常处理
  15. 用R语言对网络数据进行统计分析(四)
  16. Verilog学习笔记HDLBits——Shift Registers
  17. 【翻译】(15)菜单
  18. npm报错 gyp: No Xcode or CLT version detected!
  19. YBT 1223 An Easy Problem
  20. 快应用之先写出第一个hello world

热门文章

  1. 用注解方式写定时任务
  2. win8改win7 教程
  3. 高并发网络架构解决方案分析
  4. linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...
  5. matlab save将变量值保存为mat
  6. tensorflow下载
  7. GDAL/ORG之Python获取与安装
  8. python入门if语句练习_python入门视频:09 if语句_练习.mp4
  9. garch模型python步骤_GARCH模型的建模步骤?
  10. matlab里插入行和列