YTU3806 迷宫问题

题目描述

编写一个求解迷宫问题的程序,要求输出迷宫的所有路径,并求最短路径长度及最短路径。规定:

  • S:迷宫的入口
  • D:迷宫的出口
  • X:障碍物,无法从这里通过
  • *:空地

搜索顺序优先度:↑、→、↓、←。

输入

输入的第一行包含一个数字 nnn (2≤n≤10)(2 \leq n \leq 10)(2≤n≤10),接下来的 nnn 行输入一个 n×nn \times nn×n 的迷宫地图。

输出

输出迷宫的所有路径,每一种路径占一行,测试数据保证最终输出不会超过 100010001000 行。

最后输出所有路径中最长路径和最短路径的长度。

6
XXXXXX
XS**XX
X*X**X
X***XX
XX**DX
XXXXXX

→→↓↓↓→
→→↓↓←↓→→
↓↓→→↓→
↓↓→↓→→
8 6

#include
using namespace std;
//这是存路径
stackst;//对应
//存完路径,需要马上输出,输出需要pop,但是路径中的数据不能改变,因此需要一个中间栈;
stackzt;
//四个方向
int dx[5]={0,-1,0,1,0}; //上 右 下 左 
int dy[5]={0,0,1,0,-1};
int n;
int bs,es;//S的位置;
int ex,ey;
int k1,k2;
char m[100][100];
int j=-10;
int flag=0;
int ant=0,maxa=-1,mina=1000;//计数并找到最大最小	
void bfs(int x,int y){
	
	if(x==ex&&y==ey){//找到出口
//		cout<<" 1";
		maxa=max(maxa,ant);
		mina=min(mina,ant);
		while(!st.empty()){ //把st中元素推到zt 
//			cout<=0&&xx=0&&yy>n;
	for(int j=0;j>m[j];
	}
	for(int i=0;i

你可能感兴趣的:(数据结构)