问答文章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
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 数据结构中 为什么队列求解迷宫的解就是最优解 而栈不是 梦见女人青橘子 梦见送别人橘子 急急急急急求旅游相册的名字 请问安福武功山风景名胜区怎么样? 惠州黄冈中学校服哪里有的买? 为什么惠高和仲恺的校服一样 冰箱门胶条有购买地方吗 梦见两只老鼠攻击大家 谁有中国古典风的PPT课件模板? 魅蓝note3手机怎么关闭后台程序 淘宝如何免费试用 咨询一下 华为p40参数怎么样 如何看待周立波在《局面》栏目的回应? 主治医师考试培训哪家好 医考哪个机构好 冰箱外壳会不会发烫 春季长高食谱有哪些 冬季养生老人饮食需要注意什么 老年人冬季吃什么食物 迷宫问题给一个20×20的迷宫,起点坐标和终点坐标,问从起点是否能到达终点 c语言迷宫问题,以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。 QQ三国删除人物要24小时,能不能让快点?有什么方法? qq三国角色删除 qq三国结拜等级5…要删除她、多久才能删掉 怎么不登陆qq三国就删除人物 QQ三国删除角色问题、 怎么QQ三国删除最近组队人 宝宝上幼儿园说不喜欢幼儿园怎么办家长应该怎么做 孩子今年开始上幼儿园,不知道怎么了现在特别讨厌幼儿园要怎么办? 魅族x4怎么设制锁屏图片 晚清十大武林高手 霍元甲只排第四黄飞鸿第三 晚清十大高手都是谁? 陌陌的座驾在哪里买 qq音乐进场座驾怎么得 全民投资人游戏怎么买座驾 wifi已连接不可上网是什么原因 如何操作电脑吧 优酷无法播放视频 酸菜是怎样制作的? 给老师送花的祝福语有哪些