1 条题解

  • 0
    @ 2024-1-22 13:33:18
    #include<bits/stdc++.h>
    using namespace std;
    struct Node{
        int x,y;    
    };
    int n,sx,sy,ex,ey;
    const int N=110;
    char g[N][N];
    int dist[N][N];
    int dx[]={-1,1,0,0};
    int dy[]={0,0,-1,1};
    bool check(int x,int y) //判断出界和不能走 
    {
        if(x<1||x>n||y<1||y>n) return false;
        if(g[x][y]=='x') return false;
        return true;
    }
    int bfs()
    {
        queue<Node> q;
        q.push({sx,sy});
        while(q.size()) 
        {
            Node t=q.front();
            q.pop();
            if(t.x==ex&&t.y==ey)
            {
                return dist[ex][ey];
            }
            for(int i=0;i<4;i++)
            {
                int a=t.x+dx[i];
                int b=t.y+dy[i];
                while(check(a,b))
                {
                    if(dist[a][b]>dist[t.x][t.y]+1)
                    {
                        dist[a][b]=dist[t.x][t.y]+1;
                        q.push({a,b});
                    } 
                    a+=dx[i];
                    b+=dy[i]; 
                }
            }
        }
    } 
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cin>>g[i][j];
                if(g[i][j]=='A') sx=i,sy=j;
                else if(g[i][j]=='B') ex=i,ey=j;
            }
        }
        memset(dist,0x3f,sizeof dist);
        dist[sx][sy]=0;
        bfs();
        if(dist[ex][ey]==0x3f3f3f3f) cout<<-1;
        else cout<<dist[ex][ey]-1;
        return 0;
    }
    
    • 1

    信息

    ID
    627
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    2
    上传者