C语言经典算法 - 老鼠走迷官(一)

说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表

示老鼠的行走路径,试以程式求出由入口至出口的路径。

解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前

进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是

递回的基本题,请直接看程式应就可以理解。

#include

#include

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)

printf("█");

else

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;

}

老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)相关推荐

  1. 棋盘算法c语言程序,C语言经典算法 - 骑士走棋盘

    搜索热词 @H_301_0@下面是编程之家 jb51.cc 通过网络收集整理的代码片段.@H_301_0@编程之家小编现在分享给大家,也给大家做个参考. 说明骑士旅游(Knight tour)在十八世 ...

  2. C语言经典算法 21-30

    目录 21 一个有序的数组插入一个数 22 将一个数组逆序输出 23 报号 求最后是谁 24 写一个统计字符串长度的函数 25 八进制转换为十进制 26 判断一个素数能被几个 9 整除 27 输入一组 ...

  3. C语言经典算法 11-20

    C语言经典算法 11-20 十一.求最大公约数和最小公倍数 十二.统计字符串数字,字母,符号的各个数量 十三.2+22+222+..... 十四.完数 十五.小球反弹问题 十六.猴子吃桃问题 十七.求 ...

  4. C语言经典算法 1-10

    目录 一.排列组合题 二.区间题 三.判断平方数相关 四.给你一个年月日判断是第几天 五.将3个数由小到大排序 六.九九乘法表 七.兔子繁殖数列 八.判断素数 九.水仙花数 十.因数分解 一.排列组合 ...

  5. c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf

    c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...

  6. 洗牌程序c语言原理,C语言经典算法 - 洗牌算法

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1-N)打乱重新排列,只 ...

  7. c语言求寻找假币的次数,C语言经典算法 - 八枚银币问题

    C语言经典算法 - 八枚银币问题 说明现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或 较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币 ...

  8. java语言算法描述_六大java语言经典算法

    在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了.数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一 ...

  9. C语言经典算法100道实战题

    [C语言经典算法100道实战题]适合具备C语言基础语法的同学学习,提高编写程序的逻辑思维能力和算法设计能力专门精心设计.100个经典的算法供大家练习及配套对应的录播视频.为我们今后学习其它的编程语言和 ...

最新文章

  1. spring源码解析五
  2. ssh secure shell
  3. 三十六、深入Vue.js组件Component(上篇)
  4. JavaScript实现binarySearch二分查找算法(附完整源码)
  5. c++并发编程之原子操作的实现原理
  6. python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?
  7. zabbix自动发现监控redis数据库
  8. JavaScript高级程序设计(第3版)中文在线阅读,也可以免费下载~
  9. android读取剪切板的方法,Android10中获取剪切板内容
  10. Redis的读写分离
  11. python乌龟赛跑_Python之龟兔赛跑
  12. Arduino基础入门篇(认识开发板和面包板)
  13. 实战——登陆注册管理后台
  14. Auto.js脚本开发入门
  15. [转] Android Miracast投屏入门
  16. error writing messa ge: File too large
  17. 为上次渲染的三角形添加颜色
  18. 1.3 常规信息系统集成技术
  19. 利用特征多项式计算矩阵的幂
  20. python图片大小怎么算的_python图片大小处理;

热门文章

  1. zbb20180117 汉字转拼音 pinyin4
  2. 处理Excel,填充空白区域
  3. FMS3系列(三):创建基于FMS的流媒体播放程序
  4. Visual C# 2008+SQL Server 2005 数据库与网络开发--13.1.1 菜单创建
  5. SQLite和MySQL数据库的区别与应用
  6. 单线程会导致死锁吗?
  7. 每日一题(49)—— 有符号数与无符号数
  8. STM32——DMA
  9. 浙江省计算机二级aoa成绩,浙江省计算机二级AOAEXCEL函数列表
  10. 四、ajax请求超时与网络异常处理