关于迷宫最短路径与所有路径的问题Word文档格式.docx
- 文档编号:12936793
- 上传时间:2022-09-30
- 格式:DOCX
- 页数:9
- 大小:22.91KB
关于迷宫最短路径与所有路径的问题Word文档格式.docx
《关于迷宫最短路径与所有路径的问题Word文档格式.docx》由会员分享,可在线阅读,更多相关《关于迷宫最短路径与所有路径的问题Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
//入口,出口坐标,迷宫大小
voidInit_maze();
//初始化系统自带迷宫
voidNewCreat();
//新建迷宫
voidPut_in();
//输入进出口
voidPutOut_all();
//找所有路径和最短路径并输出所有路径
voidPutOut_Grap();
//输出迷宫图形
voidMigong();
//使用迷宫
voidmain()
cout<
<
"
*******************欢迎使用迷宫系统*******************\n"
;
while
(1)
{
inti;
cout<
请选择你要的操作:
\n"
<
1.使用系统自带迷宫\n"
<
2.使用新建迷宫\n"
0.退出\n"
请输入:
cin>
>
i;
switch(i)
{
case1:
Init_maze();
Migong();
break;
case2:
NewCreat();
case0:
return;
default:
cout<
*****输入错误,请重新输入!
*****\n"
}
}
}
//主函数
voidInit_maze()
inti;
for(i=0;
i<
=m1;
i++)
for(intj=0;
j<
=n1;
j++)
maze[i][j]=1;
mark[i][j]=0;
}
for(i=1;
=6;
i++)maze[1][i]=0;
maze[1][8]=maze[2][1]=maze[2][3]=0;
for(i=6;
=10;
i++)maze[2][i]=0;
maze[3][1]=maze[3][3]=maze[3][6]=maze[3][10]=0;
maze[4][1]=maze[4][9]=maze[4][10]=maze[5][1]=0;
for(i=3;
=7;
i++)maze[4][i]=0;
=3;
i++)maze[6][i]=0;
for(i=7;
maze[6][5]=maze[7][1]=maze[7][5]=maze[7][6]=0;
maze[7][7]=maze[9][3]=maze[9][8]=maze[9][10]=0;
=5;
i++)maze[8][i]=0;
for(i=8;
maze[10][8]=maze[6][4]=maze[8][7]=maze[10][10]=0;
//构建系统迷宫
voidMigong()
************欢迎使用迷宫************\n"
1.输出所有路径及最短路径\n"
0.返回上一级菜单\n"
---------------------------\n"
{
Put_in();
PutOut_all();
break;
}
//系统自带迷宫操作函数
voidPutOut_Grap()
迷宫图形:
endl;
2*m1;
_"
m1;
for(intj=1;
n1;
cout<
"
maze[i][j];
-"
共"
m1-1<
行,"
n1-1<
列"
//输出迷宫的图形
voidPut_in()
intp,q;
PutOut_Grap();
请选择你的入口(i1,j1):
cin>
p>
q;
i1=p;
j1=q;
请选择你的出口(i2,j2):
i2=p;
j2=q;
//输入迷宫的进出口
voidPutOut_all()
inti,j,di,find,k;
top++;
Stack[top].i=i1;
Stack[top].j=j1;
Stack[top].di=-1;
mark[i1][j1]=1;
while(top>
-1)//寻找路径
i=Stack[top].i;
j=Stack[top].j;
di=Stack[top].di;
if(i==i2&
&
j==j2)//找到一条路径则输出
***********************************\n"
路径"
count++<
:
("
Stack[0].i<
"
Stack[0].j<
)"
for(k=1;
k<
=top;
k++)
{
cout<
->
Stack[k].i<
Stack[k].j<
if((k+1)%5==0)cout<
}
if(top+1<
minlen)
for(k=0;
Path[k]=Stack[k];
minlen=top+1;
mark[Stack[top].i][Stack[top].j]=0;
top--;
i=Stack[top].i;
j=Stack[top].j;
di=Stack[top].di;
find=0;
while(di<
4&
find==0)//确定将要移动的方向及路程
di++;
i=Stack[top].i+move[di][0];
j=Stack[top].j+move[di][1];
if(mark[i][j]==0&
maze[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;
mark[i][j]=1;
else
最短路径如下:
长度:
minlen<
路径:
\n("
Path[0].i<
Path[0].j<
for(k=1;
minlen;
Path[k].i<
Path[k].j<
if((k+1)%5==0)cout<
count=1;
//输出所有路径
voidNewCreat()
inth,l,i;
请输入你的迷宫的行数,列数:
h>
l;
m1=h+1;
n1=l+1;
请以行为主序输入你的迷宫图形:
=h;
=l;
cin>
}cout<
迷宫构建成功!
//自定义构建迷宫
结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 迷宫 路径 所有 问题