⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 labyreinth.cpp

📁 本程序的功能是找出指定迷宫的路径
💻 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 + -