【BFS】AcWing844. 走迷宫
作者:互联网
AcWing844.走迷宫
题解
数组模拟队列
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 110;
int n, m;
int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
bool vis[N][N];
int row[N * N], col[N * N], step[N * N], hh, tt = -1, g[N][N];
void BFS()
{
int x, y, xx, yy, s;
row[++ tt ] = 1, col[ tt ] = 1, step[tt] = 0;
while(hh <= tt)
{
x = row[hh], y = col[hh], s = step[hh ++ ];
if(x == n && y == m)
{
cout << s << endl;
return;
}
for(int i = 0 ;i < 4; ++i)
{
xx = x + dir[i][0], yy = y + dir[i][1];
if(xx > n || xx <= 0 || yy > m || yy <= 0 || g[xx][yy] == 1 || vis[xx][yy]) continue;
step[++ tt] = s + 1;
row[tt] = xx, col[tt] = yy, vis[xx][yy] = true;
}
}
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
cin >> g[i][j];
BFS();
return 0;
}
标签:int,tt,迷宫,BFS,xx,AcWing844,row 来源: https://www.cnblogs.com/czy-algorithm/p/16301475.html