题解 | 岛屿数量

岛屿数量

https://www.nowcoder.com/practice/5225a111760b46c2be897d97b4d8561f

#include <iostream>
#include<vector>
using namespace std;

const int dirs[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void dfs(int x,int y,vector<vector<char>>&grid,vector<vector<bool>>&visited){
    int n=grid.size();
    int m=grid[0].size();
    if(x<0||x>=n||y<0||y>=m||grid[x][y]!='W'||visited[x][y])return;
    visited[x][y]=true;
    for(auto&dir:dirs){
        dfs(x+dir[0],y+dir[1],grid,visited);
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    cin>>n>>m;
    vector<vector<char>>grid(n,vector<char>(m));
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>grid[i][j];
        }
    }
    vector<vector<bool>>visited(n,vector<bool>(m,false));
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(grid[i][j]=='W'&&!visited[i][j]){
                cnt++;
                dfs(i,j,grid,visited);
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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