#include <iostream>
#include <cstring>
using namespace std;
int m,n;
char maze[101][101];//存放输入的迷宫
int state[101][101] = { 0 };//状态数组,令0代表未走,1代表走了
//方向数组版
int dx[4] = { 0,1,0,-1 };
int dy[4] = { 1,0,-1,0 };
void dfs(int x, int y)
{
if (x == n && y == m)
{
printf("Yes\n");
exit(0);
}
//顺时针试探
for (int i = 0; i <=3; i++)
{
int tx, ty;
tx = x + dx[i];
ty = y + dy[i];
if (maze[tx][ty] == '.' && state[tx][ty] == 0)
{
state[tx][ty] = 1;
dfs(tx, ty);
state[tx][ty] = 0;
}
}
return;
}
int main()
{
scanf("%d %d", &n, &m);
getchar();
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
scanf("%c", &maze[i][j]);
}
getchar();
}
dfs(1, 1);
printf("No\n");
return 0;
}
洛谷 B3625 迷宫寻路 dfs
最新推荐文章于 2024-06-04 22:50:27 发布