博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迷宫问题队列实现
阅读量:6622 次
发布时间:2019-06-25

本文共 1607 字,大约阅读时间需要 5 分钟。

#include 
using namespace std;#define M 10#define N 10#define MaxSize 100int mg[M][N]={ {
1,1,1,1,1,1,1,1,1,1}, {
1,0,0,1,0,0,0,1,0,1}, {
1,0,0,1,0,0,0,1,0,1}, {
1,0,0,0,0,1,1,0,0,1}, {
1,0,1,1,1,0,0,0,0,1}, {
1,0,0,0,1,0,0,0,0,1}, {
1,0,1,0,0,0,1,0,0,1}, {
1,0,1,1,1,0,1,1,0,1}, {
1,1,0,0,0,0,0,0,0,1}, {
1,1,1,1,1,1,1,1,1,1}};struct{ int i; int j; int pre;}Qu[MaxSize];int front=0,rear=0;void print(int front){ while(front!=-1) { printf("a[%d][%d]\n",Qu[front].i,Qu[front].j); front=Qu[front].pre; }}void mappath(int x1,int y1,int x2,int y2){ rear++; Qu[rear].i=x1; Qu[rear].j=y1; Qu[rear].pre=-1; mg[x1][y1]=-1; int find=0; while(rear!=front) { int i,j; front++; i=Qu[front].i; j=Qu[front].j; if (i==x2&&j==y2) { find=1; print(front); } int di; for (di=0;di<3;di++) { switch(di) { case 0:i=Qu[front].i-1;j=Qu[front].j;break; case 1:i=Qu[front].i;j=Qu[front].j+1;break; case 2:i=Qu[front].i+1;j=Qu[front].j;break; case 3:i=Qu[front].i;j=Qu[front].j-1;break; } if (mg[i][j]==0) { rear++; Qu[rear].i=i;Qu[rear].j=j; Qu[rear].pre=front; mg[i][j]=-1; } } } if (!find) { printf("没路径\n"); }}int main(){ mappath(1,1,8,8);}

 

转载于:https://www.cnblogs.com/lisongfeng9213/p/3384916.html

你可能感兴趣的文章
Linux系统自带的密码生成器——mkpasswd
查看>>
Android应用程序框架层和系统运行库层日志系统源代码分析
查看>>
JRE环境查看工具
查看>>
MySQL中进程显式%的情况分析
查看>>
Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
查看>>
微软企业级加解密解决方案MBAM客户端部署
查看>>
DB2 SQL脚本批量执行
查看>>
WTP1.0开发WebService之Java Class实例
查看>>
利用XStream在Java对象和XML之间相互转换
查看>>
Entity Framework多对多关系实践(many-to-many)
查看>>
h5-5 canvas
查看>>
C#学习笔记——继承窗体
查看>>
geoserver 通过代码实现发布地图服务
查看>>
Linux 小知识翻译 - 「TCP/IP」
查看>>
火狐一打开就弹出错误控制台 解决方案 及常用插件列表备份
查看>>
android:json解析库的选择
查看>>
spark 针对决策树进行交叉验证
查看>>
new 一个接口?
查看>>
闲话WPF之九(Dependency属性 [1] )
查看>>
[解惑]JavaScript事件机制
查看>>