题解 | 走迷宫

走迷宫

https://www.nowcoder.com/practice/e88b41dc6e764b2893bc4221777ffe64

#include <bits/stdc++.h>
using namespace std;

const int N = 1010;
int n,m,sx,sy,fx,fy;
char g[N][N];
int d[N][N];
bool vis[N][N];
queue<pair<int,int>> q;
int dx[] = {1,-1,0,0},dy[] = {0,0,1,-1};

void bfs(int sx,int sy){
    memset(d,0x3f,sizeof d);
    d[sx][sy] = 0;
    vis[sx][sy] = 1;
    q.push({sx,sy});

    while(q.size()){
        int x = q.front().first;
        int y = q.front().second;
        q.pop();
        if(x==fx&&y==fy){
            cout<<d[x][y];
            return;
        }

        for(int i = 0;i<4;i++){
            int a = x + dx[i],b = y + dy[i];
            if(a<1||a>n||b<1||b>m) continue;
            if(d[a][b]<d[x][y]+1) continue;
            if(g[a][b]=='*'||vis[a][b]) continue;
            vis[a][b] = 1;
            d[a][b] = d[x][y] + 1;
            q.push({a,b});
        }
    }
    cout<<-1;
}

int main(){
    cin>>n>>m;
    cin>>sx>>sy>>fx>>fy;
    for(int i = 1;i<=n;i++) scanf("%s",g[i]+1);
    bfs(sx,sy);
    return 0;
}

#牛客春招刷题训练营#https://www.nowcoder.com/discuss/727521113110073344

全部评论

相关推荐

野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
有气魄的马来熊在摸鱼:我爱vivo 马上换手机 vivo我爱你!!!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务