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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最短路径及其他路径

#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<<"迷宫图形:"<

for(i=1;i<2*m1;i++)

cout<<"_";

cout<

for(i=1;i

{

for(int j=1;j

cout<<" "<

cout<

}

for(i=1;i<2*m1;i++)

cout<<"-";

相关文档
最新文档