📄 labyreinth.cpp
字号:
//程序名:labyrinth.cpp
// 程序功能:迷宫通路寻找的实现
// 作者:黄秋旋
// 日期:2008.12.20
// 版本:1.0
// 修改内容:
// 修改日期:
// 修改作者:
//对应类实现文件: labyrinth.h
// Stack.h
#include"labyrinth.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
//函数名:主函数
//函数返回值:无
void main()
{
int i,j;
char ch;
choice:cout<<"是否重新输入迷宫:Y/y:是,N/n:否 \n请选择(Y/N):"; //选择是否重新输入迷宫
cin>>ch;
if(ch=='Y' || ch=='y') //选择重新输入迷宫
{
cout<<"\n请输入8行10列的迷宫矩阵,其中最外层均为“1”!\n";
lg:for(i=0;i<m+2;i++) //输入迷宫
for(j=0;j<n+2;j++)
{
cin>>maze[i][j];
mark[i][j]=0; //初始化未访问标志
}//for
}//if:选择Y
else if(ch=='N' || ch=='n')//选择从文件中读入迷宫
{
ifstream fip;
fip.open("labyrinth.txt",ios::in|ios::binary); //打开文件
if(fip.fail()) //打开失败
{
cout<<"文件不存在!请重新输入迷宫!";
goto lg; //回到if重新输入迷宫
}//else if
int in;
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
{
fip>>in; //读取迷宫数据
maze[i][j]=in;
cout<<maze[i][j]<<' '; //输出迷宫
mark[i][j]=0; //初始化未访问标志
}//for
cout<<endl;
}//for
fip.close(); //关闭文件
}//else if
else //输出错误,提示重新输入
{
cout<<"请重新输入你的选择!";
goto choice; //重新选择读入迷宫的方式
}//else
cout<<"(x,y,d)中的x,y分别表示迷宫中的坐标!"<<endl<<endl;
cout<<"0: 向↓,1: 向↘,2: 向→, 3:向↖"<<endl<<endl;
cout<<"4: 向↑,5: 向↖,6: 向←, 7: 向↘" <<endl<<endl;
cout<<"有两种方式输出迷宫路径,"<<endl<<endl;
cout<<"Y/y:逆序(递归算法),N/n:顺序(非递归非递归)! \n";
cout<<"\n请输入你的选择: ";
choice1:cin>>ch; //选择想调用的算法
cout<<endl;
if(ch=='N' || ch=='n') //选择非递归算法
{
cout<<"采用顺序输出迷宫路径: \n";
cout<<"\nd 表示做到下一个坐标的方向!\n";
cout<<"\n路径为:\n";
Seek(); //调用寻路非递归函数
}
else if(ch=='Y' || ch=='y') //选择递归算法
{
cout<<"采用逆序输出迷宫路径! \n";
cout<<"\nd 表示从前一个坐标走到该坐标的方向\n";
cout<<"\n路径为:\n";
mark[1][1]=1; //加访问标志
if(Seekd(1,1)) //调用递归时用
cout<<"("<<1<<","<<1<<")"<<endl; //寻找到通路时,输出迷宫入口处的坐标
}//else if
else //输出错误,提示重新输入
{
cout<<"\n输入错误,请重新输入你的选择:";
goto choice1; //重新选择算法
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -