1、 /入口,出口坐标,迷宫大小void Init_maze(); /初始化系统自带迷宫void NewCreat(); /新建迷宫void Put_in(); /输入进出口void PutOut_all(); /找所有路径和最短路径并输出所有路径void PutOut_Grap(); /输出迷宫图形void Migong(); /使用迷宫void main() cout*欢迎使用迷宫系统*n; while(1) int i; cout请选择你要的操作:n 1.使用系统自带迷宫n i; switch(i) case 1: Init_maze();Migong();break; case 2: Ne
2、wCreat(); case 0: return; default :cout*输入错误,请重新输入!*n /主函数void Init_maze() int i; for(i=0;i=m1;i+) for(int j=0;j=n1;j+) mazeij=1; markij=0; for(i=1;=6;i+)maze1i=0; maze18=maze21=maze23=0; for(i=6;=10;i+)maze2i=0; maze31=maze33=maze36=maze310=0; maze41=maze49=maze410=maze51=0; for(i=3;=7;i+)maze4i=0;
3、=3;i+)maze6i=0; for(i=7; maze65=maze71=maze75=maze76=0; maze77=maze93=maze98=maze910=0;=5;i+)maze8i=0; for(i=8; maze108=maze64=maze87=maze1010=0;/构建系统迷宫void Migong()*欢迎使用迷宫*n 1.输出所有路径及最短路径n 0.返回上一级菜单n-n Put_in(); PutOut_all(); break; /系统自带迷宫操作函数void PutOut_Grap()迷宫图形:endl;2*m1;_m1; for(int j=1;n1; c
4、out mazeij;-共m1-1行,n1-1pq; i1=p;j1=q;请选择你的出口(i2,j2): i2=p;j2=q;/输入迷宫的进出口void PutOut_all() int i,j,di,find,k; top+; Stacktop.i=i1; Stacktop.j=j1; Stacktop.di=-1; marki1j1=1; while(top-1) /寻找路径 i=Stacktop.i; j=Stacktop.j; di=Stacktop.di; if(i=i2&j=j2) /找到一条路径则输出*n路径count+:(Stack0.i,Stack0.j) for(k=1;k
5、=top;k+) coutStackk.iStackk.j if(k+1)%5=0)cout if(top+1minlen) for(k=0; Pathk=Stackk; minlen=top+1; markStacktop.iStacktop.j=0; top-; i=Stacktop.i; j=Stacktop.j; di=Stacktop.di; find=0; while(di4&find=0) /确定将要移动的方向及路程 di+; i=Stacktop.i+movedi0; j=Stacktop.j+movedi1; if(markij=0&mazeij=0) find=1; if(find=1) /若有路可走则进栈 Stacktop.di=di; top+; Stacktop.i=i; Stacktop.j=j; Stacktop.di=-1; markij=1; else最短路径如下:长度:minlen路径:n(Path0.iPath0.j for(k=1;minlen;Pathk.iPathk.j if(k+1)%5=0)coutl; m1=h+1;n1=l+1;请以行为主序输入你的迷宫图形:=h;=l; cin cout迷宫构建成功!/自定义构建迷宫结果如下:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1