老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)
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语言经典算法 - 老鼠走迷官(一)相关推荐
- 棋盘算法c语言程序,C语言经典算法 - 骑士走棋盘
搜索热词 @H_301_0@下面是编程之家 jb51.cc 通过网络收集整理的代码片段.@H_301_0@编程之家小编现在分享给大家,也给大家做个参考. 说明骑士旅游(Knight tour)在十八世 ...
- C语言经典算法 21-30
目录 21 一个有序的数组插入一个数 22 将一个数组逆序输出 23 报号 求最后是谁 24 写一个统计字符串长度的函数 25 八进制转换为十进制 26 判断一个素数能被几个 9 整除 27 输入一组 ...
- C语言经典算法 11-20
C语言经典算法 11-20 十一.求最大公约数和最小公倍数 十二.统计字符串数字,字母,符号的各个数量 十三.2+22+222+..... 十四.完数 十五.小球反弹问题 十六.猴子吃桃问题 十七.求 ...
- C语言经典算法 1-10
目录 一.排列组合题 二.区间题 三.判断平方数相关 四.给你一个年月日判断是第几天 五.将3个数由小到大排序 六.九九乘法表 七.兔子繁殖数列 八.判断素数 九.水仙花数 十.因数分解 一.排列组合 ...
- c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf
c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...
- 洗牌程序c语言原理,C语言经典算法 - 洗牌算法
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1-N)打乱重新排列,只 ...
- c语言求寻找假币的次数,C语言经典算法 - 八枚银币问题
C语言经典算法 - 八枚银币问题 说明现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或 较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币 ...
- java语言算法描述_六大java语言经典算法
在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了.数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一 ...
- C语言经典算法100道实战题
[C语言经典算法100道实战题]适合具备C语言基础语法的同学学习,提高编写程序的逻辑思维能力和算法设计能力专门精心设计.100个经典的算法供大家练习及配套对应的录播视频.为我们今后学习其它的编程语言和 ...
最新文章
- spring源码解析五
- ssh secure shell
- 三十六、深入Vue.js组件Component(上篇)
- JavaScript实现binarySearch二分查找算法(附完整源码)
- c++并发编程之原子操作的实现原理
- python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?
- zabbix自动发现监控redis数据库
- JavaScript高级程序设计(第3版)中文在线阅读,也可以免费下载~
- android读取剪切板的方法,Android10中获取剪切板内容
- Redis的读写分离
- python乌龟赛跑_Python之龟兔赛跑
- Arduino基础入门篇(认识开发板和面包板)
- 实战——登陆注册管理后台
- Auto.js脚本开发入门
- [转] Android Miracast投屏入门
- error writing messa ge: File too large
- 为上次渲染的三角形添加颜色
- 1.3 常规信息系统集成技术
- 利用特征多项式计算矩阵的幂
- python图片大小怎么算的_python图片大小处理;