问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

毫无头绪的数据结构(C++)迷宫问题 寻求好的解决方案。。。主要问题是他干嘛要用队列?

发布网友 发布时间:2023-01-11 04:53

我来回答

2个回答

热心网友 时间:2023-10-27 12:00

#include<stdio.h>
#define M 8
#define N 8
#define MaxSize 100
int mg[M+2][N+2]={
{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 di;
}Stack[MaxSize],Path[MaxSize];
int top=-1;
int count=1;
int minlen=MaxSize;
void mgpath()
{
int i,j,di,find,k;
top++;Stack[top].i=1;Stack[top].j=1;Stack[top].di=-1;mg[1][1]=-1;

while(top>-1)
{
i=Stack[top].i;
j=Stack[top].j;
di=Stack[top].di;
if(i==M && j==N)
{
printf("%8d: ",count++);
for(k=0;k<=top;k++)
{
printf("(%d,%d) ",Stack[k].i,Stack[k].j);
if((k+1)%10==0)printf("\n\t ");
}
printf("\n");
if(top+1<minlen)
{
for(k=0;k<=top;k++)
Path[k]=Stack[k];
minlen=top+1;
}
mg[Stack[top].i][Stack[top].j]=0;
top--;
i=Stack[top].i;
j=Stack[top].j;
di=Stack[top].di;
}
find=0;
while(di<8 && find==0)
{
di++;
switch(di)
{
case 0:i=Stack[top].i-1;j=Stack[top].j;break;
case 1:i=Stack[top].i;j=Stack[top].j+1;break;
case 2:i=Stack[top].i+1;j=Stack[top].j;break;
case 3:i=Stack[top].i;j=Stack[top].j-1;break;
}
if(mg[i][j]==0)find=1;
}
if (find==1)

{ Stack[top].di=di;
top++;
Stack[top].i=i;
Stack[top].j=j;
Stack[top].di=-1;
mg[i][j]=-1;
}
else
{
mg[Stack[top].i][Stack[top].j]=0;
top--;
}
}
printf("最短路径如下:\n");
printf("长度: %d\n",minlen);
printf("路径: ");
for(k=0;k<minlen;k++)
{
printf("(%d,%d) ",Path[k].i,Path[k].j);
if((k+1)%10==0)printf("\n\t");
}
printf("\n");
}
void main()
{
printf("迷宫所有路径如下:\n");
mgpath();
}

热心网友 时间:2023-10-27 12:01

http://wenku.baidu.com/view/483d2fdc5022aaea998f0f88.html

参考资料:http://wenku.baidu.com/view/483d2fdc5022aaea998f0f88.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
金蝶精斗云备份 美人鱼在世界上存在吗 综合来看,宁波哪个区比较适宜居住,哪个区的环境及设施比较 宁波十大购物好地方 宁波购物游去哪里好 你不想去买买买吗 一两白银是多重? vivo从手机u盘和sd卡安装显示未找到文件证书查询 用微笑来阻止眼角泪珠的伤感签名 跪求有关乌鸦的传说和事情 什么牌子面膜补水保湿效果最好 哪些面膜的补水保湿效果比较好? 数据结构中 为什么队列求解迷宫的解就是最优解 而栈不是 梦见女人青橘子 梦见送别人橘子 急急急急急求旅游相册的名字 请问安福武功山风景名胜区怎么样? 惠州黄冈中学校服哪里有的买? 为什么惠高和仲恺的校服一样 冰箱门胶条有购买地方吗 梦见两只老鼠攻击大家 谁有中国古典风的PPT课件模板? 魅蓝note3手机怎么关闭后台程序 淘宝如何免费试用 咨询一下 华为p40参数怎么样 如何看待周立波在《局面》栏目的回应? 主治医师考试培训哪家好 医考哪个机构好 冰箱外壳会不会发烫 春季长高食谱有哪些 冬季养生老人饮食需要注意什么 老年人冬季吃什么食物 迷宫问题给一个20×20的迷宫,起点坐标和终点坐标,问从起点是否能到达终点 c语言迷宫问题,以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。 QQ三国删除人物要24小时,能不能让快点?有什么方法? qq三国角色删除 qq三国结拜等级5…要删除她、多久才能删掉 怎么不登陆qq三国就删除人物 QQ三国删除角色问题、 怎么QQ三国删除最近组队人 宝宝上幼儿园说不喜欢幼儿园怎么办家长应该怎么做 孩子今年开始上幼儿园,不知道怎么了现在特别讨厌幼儿园要怎么办? 魅族x4怎么设制锁屏图片 晚清十大武林高手 霍元甲只排第四黄飞鸿第三 晚清十大高手都是谁? 陌陌的座驾在哪里买 qq音乐进场座驾怎么得 全民投资人游戏怎么买座驾 wifi已连接不可上网是什么原因 如何操作电脑吧 优酷无法播放视频 酸菜是怎样制作的? 给老师送花的祝福语有哪些