资源简介
该程序作用为对于输入的n*n的迷宫(用1表示障碍,0表示可通行),从入口(1,1)出发,找出一条通往(n,n)的最短路径,若有多条路径长度相同 ,则随机输出其中一条。
代码片段和文件信息
/*该程序作用为对于输入的n*n的迷宫(用1表示障碍,0表示可通行),从入口(11)出发,找出一条通往(nn)的最短路径,若有多条路径长度相同 ,则随机输出其中一条。
例如:若n为5,迷宫为
01101
00001
01011
11001
11100
则输出为(*表示路径中的点)
███████
█**██ ██
█****** ██
█ █**███
███****██
████****█
███████
*/
#include
#define maxnum 10000
int n;
int move[4][2]={{01}{10}{-10}{0-1}};//move数组表示可以移动的四个方向
int time[51][51];//time数组存放到达某一点的最少时间(假设每走一步所用时间为1);
char maze[51][51];//maze数组用于存放迷宫地图
struct xy{
int xy;
}prestep[51][51];//prestep数组用于记录到达某一点的前一步的坐标,如prestep[x][y].x里面存放路径中(xy)的前一个点的横坐标,
//prestep[x][y].y存放相应的纵坐标。
void getmaze(void);
void search(int xint yint prexint prey);
int check(int xint y);
void getpath(int xint y);
int main()
{
int ij;
getmaze();
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
time[i][j]=maxnum;//先将时间都设为最大值
search(1100);
if(prestep[n][n].x==0)
printf(“NO WAY!\n“);//无法走出迷宫
else{
getpath(nn);
system(“chcp 437“);
for(i=0;i<=n+1;i++){
for(j=0;j<=n+1;j++)
if(maze[i][j]==‘1‘)
printf(“%c“219);
else if(maze[i][j]==‘*‘)
printf(“**“);
else
printf(“ “) ;
printf(“\n“);
}
}
}
void getmaze(void)//读入迷宫地图
{
int ij;
char c;
printf(“请输入迷宫大小n:\n
- 上一篇:188协议测试软件
- 下一篇:555延时电路原理图
相关资源
- 灰色预测G(11)R语言代码
- 四个开关流水灯
- 东北大学Linux实验报告及代码sk.zip
- 手势识别传感器paj7620 arduino板使用代
- 多目标优化免费NSGA-II代码+详细解释详
- 教师档案管理系统源代码+配套论文
- PIC16F877A和LCD1602液晶显示以及mpx4250压
- 基于飞思卡尔MC9S12G128芯片的uds诊断代
- 源代码教育经典的ExtJS全套教学视频
- visual studio 让代码看起来更舒服
- Eclipse 代码模板设置
- 空间调制仿真代码.zip
- 商城前端源代码
- 混沌粒子群优化算法代码
- 简单的火车票订票系统完整代码
- 坦克大战游戏源代码
- linux字符设备驱动代码,副实验报告很
- 微信JS-SDK微信分享接口开发实用版代
- STM32多路数据采集源代码
- SCE-UA代码
- 《编程风格:好代码的逻辑》随书代
- 字典学习PPT和源码
- openCL编程指导随书源代码
- 树莓派控制RGB LED源代码softPwm
- spring ioc+mvc代码
- 马赛克效果的JS图片切换代码.rar
- js左右切换鼠标可控的无缝图片滚动代
- oc学生成绩管理系统和计算器
- Cef3博文配套源代码
- CADENCE DRC错误代码
评论
共有 条评论