2 条题解

  • -1
    @ 2024-3-10 19:33:49
    #include <iostream>
    #include <queue>
    using namespace std;
    int N,M,sum;
    char a[110][110];
    int dx[] = {-1,-1,-1,0,0,1,1,1};
    int dy[] = {1,0,-1,1,-1,1,0,-1};
    
    struct Node
    {
        int x;
        int y;
    };
    queue<Node>q;
    
    bool ia(int x,int y)
    {
        if (x >= 0 && x < N && y >= 0 && y < M && a[x][y] == 'W')
        {
            return true;
        }
        return false;
    }
    
    void bfs(int x,int y)
    {
        sum++;
        q.push((Node){x,y});
        a[x][y] = 'F';
        while (!q.empty())
        {
            Node temp = q.front();
            q.pop();
            for (int i = 0;i < 8;i++)
            {
                int nx = temp.x + dx[i];
                int ny = temp.y + dy[i];
                if (ia(nx,ny) == true)
                {
                    q.push((Node){nx,ny});
                    a[nx][ny] = 'F';
                }
            }
        }
    }
    
    int main()
    {
        cin >> N >> M;
        for (int i = 0;i < N;i++)
        {
            for (int j = 0;j < M;j++)
            {
                cin >> a[i][j];
            }
        }
        for (int i = 0;i < N;i++)
        {
            for (int j = 0;j < M;j++)
            {
                if (a[i][j] == 'W')
                {
                    bfs(i,j);
                }
            }
        }
        cout << sum;
        return 0;
    }
    
    • -2
      @ 2024-1-30 11:43:40

      #include #include<bits/stdc++.h> using namespace std; const int N=1145; int n,m,ans; char a[N][N]; int dx[]={0,0,1,-1,1,1,-1,-1}; int dy[]={1,-1,0,0,-1,1,-1,1}; struct node{ int x,y; }; queue q; bool check(int x,int y){ if(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]'W') return 1; return 0; } void bfs(int x,int y){ q.push((node){x,y}); a[x][y]='.'; while(!q.empty()){ node top=q.front(); q.pop(); for(int i=0;i<=7;i++){ int xx=top.x+dx[i]; int yy=top.y+dy[i]; if(check(xx,yy)){ a[xx][yy]='.'; q.push((node){xx,yy}); } } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]'W'){ ans++; bfs(i,j); } } } cout<<ans; return 0; }

      • 1

      信息

      ID
      1351
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      递交数
      260
      已通过
      113
      上传者