题目描述:给定一个N行M列的迷宫,其中’.‘代表空地,可以通行;’#'代表障碍物,无法通行;'S’代表起点;‘T’代表终点;’'S’和’T’这两个位置也是空地,可以通行。在迷宫中可以向上、下、左、右四个不同的方向行走,请你判断从起点出发是否可以走到终点?如果可以,请你计算到达终点最少需要走几步。
输入样例:
4 9
#S#.#.#T#
#....##.#
#.##....#
#....####
代码1:
#include<stdio.h>
#include<queue>
using namespace std;
const int maxn = 100;
int m, n;
bool inq[maxn][maxn] = {
false};
char matrix[maxn][maxn] = {
0};
int X[4]={
0, 0, 1, -1};
int Y[4]={
1, -1, 0, 0};
struct node{
int x, y;
int step; //从起点到终点的最小步数
} Node, S, T;
bool judge(int x, int y){
//判断路径是否有效
if(x<0||x>m-1||y<0||y>n-1) return false; //超界
if(matrix[x][y]=='#'||inq[x][y]==true) return false; //遇到障碍物或者重复格
return true;
}
bool isDes