wa求调,样例输出为55有点离谱
查看原帖
wa求调,样例输出为55有点离谱
790641
easonlee2004楼主2024/4/16 21:51

wa求调

看题解好多用的都是struct存坐标和步数,我用的是cnt来存bfs层数,一开始是0。用一个pair存x坐标和y坐标。

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

typedef pair<int,int> pii;

int dx[4]={-1,1,0,0}; //上下左右
int dy[4]={0,0,-1,1};
char g[14][14]; //存储图
bool vis[14][14]; //是否遍历过
long long cnt; //每次扩展一层cnt++
queue<pii> q;

void bfs()
{
    while(!q.empty())
    {
    	cnt++;
        auto t=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            int x=t.first+dx[i];
            int y=t.second+dy[i];
            if(x<0||x>10||y<0||y>10||vis[x][y]||g[x][y]=='R')
                continue;
            vis[x][y]=1;
            if(g[x][y]=='B')
                return;
            q.push({x,y});
        }
    }
}

int main()
{
    for(int i=1;i<=10;i++)
    {
        for(int j=1;j<=10;j++)
        {
            cin>>g[i][j];
            if(g[i][j]=='L')
            {
                q.push({i,j});
                vis[i][j]=1;
            }
        }
    }
    bfs();
    cout<<cnt;
            
    return 0;
}
2024/4/16 21:51
加载中...