欢迎来到天天文库
浏览记录
ID:53044407
大小:68.00 KB
页数:8页
时间:2020-03-31
《迷宫问题-C++代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#include"SQ_Stack.h"usingnamespacestd;structVisited{intnum;//是否是通路(1或0)intvisited;//判断是否已被访问(1或0)};classMiGong{private:Visitedmaze[100][100];//存储迷宫的矩阵intn;//迷宫大小(n*n)intpow;//判断方向的变量public:voidcr
2、eat()//建造迷宫{intchoose,i,j;while(1){cout<<"1.自动输入"<>choose;system("cls");if(choose==1)//自动输入{cout<<"请输入迷宫大小(n*n):";cin>>n;for(i=0;i3、<<"你生成的迷宫为("<4、5、j==06、7、i==n-18、9、j==n-1)//若是边界,则置为1maze[i][j].num=1;elsemaze[i][j].num=(rand()%(2-0));if(i==1&&j==1)//入口置为0maze[i][j].num=0;elseif(i==n-2&&j==n-2)//出口置为0maze[i][j].num=0;cout<10、.num<<"";if(j==n-1)cout<>n;for(i=0;i>c;if(c==1){system(11、"cls");cout<<"请手动输入迷宫:"<>mi;maze[i][j].num=mi;cout<12、n;i++)for(j=0;j>maze[i][j].num;cout<13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())14、15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
3、<<"你生成的迷宫为("<4、5、j==06、7、i==n-18、9、j==n-1)//若是边界,则置为1maze[i][j].num=1;elsemaze[i][j].num=(rand()%(2-0));if(i==1&&j==1)//入口置为0maze[i][j].num=0;elseif(i==n-2&&j==n-2)//出口置为0maze[i][j].num=0;cout<10、.num<<"";if(j==n-1)cout<>n;for(i=0;i>c;if(c==1){system(11、"cls");cout<<"请手动输入迷宫:"<>mi;maze[i][j].num=mi;cout<12、n;i++)for(j=0;j>maze[i][j].num;cout<13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())14、15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
4、
5、j==0
6、
7、i==n-1
8、
9、j==n-1)//若是边界,则置为1maze[i][j].num=1;elsemaze[i][j].num=(rand()%(2-0));if(i==1&&j==1)//入口置为0maze[i][j].num=0;elseif(i==n-2&&j==n-2)//出口置为0maze[i][j].num=0;cout<10、.num<<"";if(j==n-1)cout<>n;for(i=0;i>c;if(c==1){system(11、"cls");cout<<"请手动输入迷宫:"<>mi;maze[i][j].num=mi;cout<12、n;i++)for(j=0;j>maze[i][j].num;cout<13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())14、15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
10、.num<<"";if(j==n-1)cout<>n;for(i=0;i>c;if(c==1){system(
11、"cls");cout<<"请手动输入迷宫:"<>mi;maze[i][j].num=mi;cout<12、n;i++)for(j=0;j>maze[i][j].num;cout<13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())14、15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
12、n;i++)for(j=0;j>maze[i][j].num;cout<13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())14、15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
13、k()//寻找路径{SQ_StackStack;//定义栈Stack.InitStack();//栈初始化if(maze[n-2][n-2].num)return;//若出口为0,则跳出inti=n-2,j=n-2;intpow,a=0;do//开始寻找线路{if((!maze[i][j].num)&&(maze[i][j].visited==0))//如果是通路且从未被访问{if((i!=Stack.getTI())
14、
15、(j!=Stack.getTJ()))//如果该点未入栈,则入栈,访问该点{Stack.push(
16、i,j);maze[i][j].visited=1;//且把访问位置为1}if(i==1&&j==1)//如果是出口则跳出全部循环{a=1;break;}i=i;//初始向左访问j=j-1;pow=0;}else//如果不是通路{intback1,back2;pow++;//方向位改变i=Stack.getTI();//回到访问的
此文档下载收益归作者所有