1 条题解

  • 3
    @ 2026-8-21 10:25:59
    #include <iostream>
    #include <vector>
    using namespace std;
    int N,M;
    vector<string> grid;
    int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
    int dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
    void dfs(int x, int y) {
        grid[x][y] = '.';
        for (int i = 0; i < 8; i++) {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx >= 0 && nx < N && ny >= 0 && ny < M && grid[nx][ny] == 'W') {
                dfs(nx, ny);
            }
        }
    }
    int main() {
        cin >> N >> M;
        grid.resize(N);
        for (int i = 0; i < N; i++) cin >> grid[i];
        
        int cnt = 0;
        for (int i = 0; i < N; i++)
            for (int j = 0; j < M; j++)
                if (grid[i][j] == 'W') {
                    dfs(i, j);
                    cnt++;
                }
        cout << cnt << endl;
        return 0;
    }
    

    信息

    ID
    475
    时间
    1000ms
    内存
    64MiB
    难度
    2
    标签
    递交数
    42
    已通过
    28
    上传者