关于迷宫最短路径与所有路径的问题Word文档格式.docx

上传人:b****2 文档编号:12936793 上传时间:2022-09-30 格式:DOCX 页数:9 大小:22.91KB
下载 相关 举报
关于迷宫最短路径与所有路径的问题Word文档格式.docx_第1页
第1页 / 共9页
关于迷宫最短路径与所有路径的问题Word文档格式.docx_第2页
第2页 / 共9页
关于迷宫最短路径与所有路径的问题Word文档格式.docx_第3页
第3页 / 共9页
关于迷宫最短路径与所有路径的问题Word文档格式.docx_第4页
第4页 / 共9页
关于迷宫最短路径与所有路径的问题Word文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

关于迷宫最短路径与所有路径的问题Word文档格式.docx

《关于迷宫最短路径与所有路径的问题Word文档格式.docx》由会员分享,可在线阅读,更多相关《关于迷宫最短路径与所有路径的问题Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

关于迷宫最短路径与所有路径的问题Word文档格式.docx

//入口,出口坐标,迷宫大小

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<

迷宫构建成功!

//自定义构建迷宫

结果如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1