用C++编一个迷宫的程序
要求:(1)用户可以自己建立一个大小随意的迷宫(2)从入口出发,找到所有出路最好用图形化的方式演示...
要求: (1) 用户可以自己建立一个大小随意的迷宫 (2) 从入口出发,找到所有出路最好用图形化的方式演示
展开
2个回答
推荐于2016-09-29
展开全部
在书找的,只打了个结构体(太多了),我利用stack做的!希望能对你有所帮助!程序如下:
typedef struct{
int ord;//通道块的路径上的序号
PosType seat;//通道块在迷宫的坐标位置
int di;//从此通道块走向下一个通道块的方向
}SelemType;//stack的元素类型
Status MazePath(MazeType maze,PosType start,PosType end){
//若迷宫 maze中存在从入口start到出口end的通道,所以,求得一条存放在stack中
//(从stack底到顶)并返回TRUE,否则返回FALSE
InitStack(S);
curpos=start;//设置当前的位置为入口位置
curstep=1;//探索第一步
do{
if(Pass(curpos)){//当前位置可以通过,即是未曾走过的通道块
FootPrint(curpos);//留下足迹
e=(curstep,curpos,1);
Push(s,e);//加入路径
if(curpos==end)
return(TRUE);//到达终点
curpos=NextPos(curpos,1);//下一位置是当前位置的东部
curstep++;//探索下一步
}
else{//当前位置不能通过
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat);//留下不能通过的标记,并退回一步
Pop(S,e);
}
if(e.di<4){
e.di++;
Push(s.e);//换下一个方向探索
curpos=NextPos(e.seat e.di);//设定当前位置是该新方向上的相邻块
}//if
}//if
}//else
}while(!StackEmpty(S));
return(FALSE);
}//MazePath
另外,虚机团上产品团购,超级便宜
typedef struct{
int ord;//通道块的路径上的序号
PosType seat;//通道块在迷宫的坐标位置
int di;//从此通道块走向下一个通道块的方向
}SelemType;//stack的元素类型
Status MazePath(MazeType maze,PosType start,PosType end){
//若迷宫 maze中存在从入口start到出口end的通道,所以,求得一条存放在stack中
//(从stack底到顶)并返回TRUE,否则返回FALSE
InitStack(S);
curpos=start;//设置当前的位置为入口位置
curstep=1;//探索第一步
do{
if(Pass(curpos)){//当前位置可以通过,即是未曾走过的通道块
FootPrint(curpos);//留下足迹
e=(curstep,curpos,1);
Push(s,e);//加入路径
if(curpos==end)
return(TRUE);//到达终点
curpos=NextPos(curpos,1);//下一位置是当前位置的东部
curstep++;//探索下一步
}
else{//当前位置不能通过
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat);//留下不能通过的标记,并退回一步
Pop(S,e);
}
if(e.di<4){
e.di++;
Push(s.e);//换下一个方向探索
curpos=NextPos(e.seat e.di);//设定当前位置是该新方向上的相邻块
}//if
}//if
}//else
}while(!StackEmpty(S));
return(FALSE);
}//MazePath
另外,虚机团上产品团购,超级便宜
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询