其他分享
首页 > 其他分享> > 【BFS】AcWing844. 走迷宫

【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