5.Algorithm Gossip: 老鼠走迷官(一)

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

解法

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

#include <stdio.h>
#include <stdlib.h>int visit(int, int);int maze[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, 2, 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 startI = 1, startJ = 1;        // 入口int endI = 5, endJ = 5;  //  出口int success = 0;int main(void) { int i, j;printf("显示迷宫:\n"); for(i = 0; i < 7; i++) {for(j = 0; j < 7; j++) if(maze[i][j] == 2)elseprintf("█");printf("    ");printf("\n");}if(visit(startI, startJ) == 0)printf("\n没有找到出口!\n"); else {printf("\n显示路径:\n"); for(i = 0; i < 7; i++) {for(j = 0; j < 7; j++) { if(maze[i][j] == 2)printf("█");else if(maze[i][j] == 1) printf("◇");else}printf(" ");printf("\n");}}return 0;}int visit(int i, int j) { maze[i][j] = 1;if(i == endI && j == endJ) success = 1;if(success != 1 && maze[i][j+1] == 0) visit(i, j+1); if(success != 1 && maze[i+1][j] == 0) visit(i+1, j); if(success != 1 && maze[i][j-1] == 0) visit(i, j-1); if(success != 1 && maze[i-1][j] == 0) visit(i-1, j);if(success != 1)maze[i][j] = 0; return success;}

C++经典算法题-老鼠走迷官(一)相关推荐

  1. C++经典算法题-老鼠走迷官(二)

    6.Algorithm Gossip: 老鼠走迷官(二) 说明 由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? 解法 求所有路径看起来复杂但其实更简单,只要在老鼠走至出 ...

  2. 经典算法大全51例——56.老鼠走迷官

    经典算法大全51例--5&6.老鼠走迷官 算法目录合集 地址 说明 题目以及个人题解 说明 题目 原理分析 问题① 原理 代码实现--Java 问题② 原理 代码实现--Java 相关题目其他 ...

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

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

  4. 【经典算法】老鼠走迷宫问题

    老鼠走迷宫问题及其多个变种 一.说明 老鼠走迷宫问题的递归实现,是对递归思想的一种应用. 二.问题描述 给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图.给定入口位置和出口位 ...

  5. 经典算法五--老鼠走迷宫

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

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

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

  7. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  8. 经典算法题每日演练——第二十二题 奇偶排序

    原文:经典算法题每日演练--第二十二题 奇偶排序 这个专题因为各种原因好久没有继续下去了,MM吧...你懂的,嘿嘿,不过还得继续写下去,好长时间不写,有些东西有点生疏了, 这篇就从简单一点的一个&qu ...

  9. 经典算法题每日演练——第十九题 双端队列

    经典算法题每日演练--第十九题 双端队列 原文:经典算法题每日演练--第十九题 双端队列 话说大学的时候老师说妹子比工作重要~,工作可以再换,妹子这个...所以...这两个月也就一直忙着Fall in ...

最新文章

  1. append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域
  2. 十进制 转换为 二进制
  3. 1003 Emergency (25 分)【Dijastra与DFS解法】
  4. 穷人靠力,富人借力!看完你将明白一切!
  5. Flink中的状态管理
  6. java正则表达式tab_Linux下如何使用grep命令查找带有tab(退格)的字符
  7. 江苏大学c语言程序设计,江苏大学201级C语言课程设计要求及题目.doc
  8. 前端---二级级联下拉列表的实现
  9. 物联网卡在智慧农业的作用有哪些
  10. 音频频谱特效 jaVa_基于Matlab dsp工具箱 的实时音频采集及频谱显示
  11. oracle单行函数 之 字符函数
  12. 【Xamarin挖墙脚系列:mac 终端 常用命令+Mac OS X的快捷键+beamoff 】
  13. 小米进军欧洲智能手机市场:一面是狂欢,一面是考验...
  14. python 语音处理工具包AudioSegment的基本使用
  15. html字体换成白色,css怎么把字体颜色改为白色
  16. Mac版3D动画建模渲染工具C4D R26
  17. Apahce虚拟主机与伪静态
  18. 4、关于step的设置
  19. [OHIF-Viewers]医疗数字阅片-医学影像-Cornerstone
  20. KD树详解及KD树最近邻算法

热门文章

  1. web工作流管理系统开发之一 工作流概念
  2. 推荐一个分布式系列博主--许雪里
  3. oracle修改连接端口,更改Oracle数据库连接端口
  4. DSP 2803x IIC/I2C总线
  5. wordpress密码的破解
  6. python无法输入中文注释的解决办法
  7. iframe滚动条在safari中无法滚动的终极解决方案
  8. 使用NSIS打包revit插件安装包
  9. 如何在Csharp实现等待
  10. 关于SpringMVC框架实现简单的文件上传下载(ssm)