题目大意:前提:(迷宫中一直向左或者向右走(可用DFS),一定可以走出迷宫,即从S走到T)
要求输出一直向左走走出迷宫需要的步数,一直向右走走出迷宫需要的步数,和走出迷宫需要的最小步数(两次深搜,一次广搜)
附AC代码
#include<iostream>
#include<queue>
using namespace std;
#define MapMax 40
#define DirMax 4
struct Pos
{
int x, y;
};
int Dir[DirMax][2] = { { 0,-1 },{ -1,0 },{ 0,1 },{ 1,0 } };
int MapN, MapM;
bool IsEnd;
void DFS_Fun(int Dir[][2],char Map[][MapMax], int Mark[][MapMax], int CurX, int CurY, int EndX, int EndY, int &CurStep,int DirIndex)
{
if (CurX == EndX && CurY == EndY)
{
IsEnd = true;
return;
}
int tempDir = DirIndex;
int n = DirMax;
for(int k = 0;k<DirMax;k++)
{
DirIndex = tempDir + k;
DirIndex %= DirMax;
int NextX = CurX + Dir[DirIndex][0];
int NextY = CurY + Dir[DirIndex][1];
if (NextX >= MapN || NextX < 0 || NextY >&