首页 迷宫 最短路径及所有路径的问题

迷宫 最短路径及所有路径的问题

举报
开通vip

迷宫 最短路径及所有路径的问题#include using namespace std; #define MAXSIZE 200 #define m 999 #define n 999 typedef struct { int i,j,di; }Queue; Queue Stack[MAXSIZE],Path[MAXSIZE];//栈和存放最短路径长度的数组 int top=-1,count=1,minlen=MAXSIZE;//栈顶指针,路径计数器,最短路径长度 const int move[4][2]={ ...

迷宫 最短路径及所有路径的问题
#include using namespace std; #define MAXSIZE 200 #define m 999 #define n 999 typedef struct { int i,j,di; }Queue; Queue Stack[MAXSIZE],Path[MAXSIZE];//栈和存放最短路径长度的数组 int top=-1,count=1,minlen=MAXSIZE;//栈顶指针,路径计数器,最短路径长度 const int move[4][2]={ {-1,0},{0,1},{1,0},{0,-1}}; int mark[m][n]; //标志数组 int maze[m][n]; //迷宫数组 int i1=1,j1=1,i2=10,j2=10,m1=11,n1=11; //入口,出口坐标,迷宫大小 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" <<"2.使用新建迷宫\n" <<"0.退出\n"; cout<<"请输入:"; cin>>i; switch(i) { case 1: Init_maze();Migong();break; case 2: NewCreat();Migong();break; case 0: return; default :cout<<"*****输入错误,请重新输入!*****\n";break; } } } //主函数 void Init_maze() { int i; for(i=0;i<=m1;i++) for(int j=0;j<=n1;j++) { maze[i][j]=1; mark[i][j]=0; } for(i=1;i<=6;i++)maze[1][i]=0; maze[1][8]=maze[2][1]=maze[2][3]=0; for(i=6;i<=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;i<=7;i++)maze[4][i]=0; for(i=1;i<=3;i++)maze[6][i]=0; for(i=7;i<=10;i++)maze[6][i]=0; 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; for(i=1;i<=5;i++)maze[8][i]=0; for(i=8;i<=10;i++)maze[8][i]=0; maze[10][8]=maze[6][4]=maze[8][7]=maze[10][10]=0; } //构建系统迷宫 void Migong() { cout<<"************欢迎使用迷宫************\n"; while(1) { int i; cout<<"请选择你要的操作:\n" <<" 1.输出所有路径及最短路径\n" <<" 0.返回上一级菜单\n"; cout<<"请输入:"; cin>>i; cout<<"---------------------------\n"; switch(i) { case 1: { Put_in(); PutOut_all(); break; } case 0: return; default :cout<<"*****输入错误,请重新输入!*****\n";break; } } } //系统自带迷宫操作函数 void PutOut_Grap() { int i; cout<<"迷宫图形:"<>p>>q; i1=p;j1=q; cout<<"请选择你的出口(i2,j2):"; cin>>p>>q; i2=p;j2=q; } //输入迷宫的进出口 void PutOut_all() { int i,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) //找到一条路径则输出 { cout<<"***********************************\n"; cout<<"路径"<("<("<>h>>l; m1=h+1;n1=l+1; for(i=0;i<=m1;i++) for(int j=0;j<=n1;j++) { maze[i][j]=1; mark[i][j]=0; } cout<<"请以行为主序输入你的迷宫图形:\n"; for(i=1;i<=h;i++) { for(int j=1;j<=l;j++) cin>>maze[i][j]; }cout<
本文档为【迷宫 最短路径及所有路径的问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_440668
暂无简介~
格式:doc
大小:40KB
软件:Word
页数:11
分类:工学
上传时间:2011-11-07
浏览量:26