题解 | 数水坑

数水坑

https://www.nowcoder.com/practice/664ca4289fcf457ba3109fdf4a7a1a05

#include <stdio.h>
#include <string.h>
#define MAXN 105
char tdi[MAXN][MAXN];//田地网格
int vis[MAXN][MAXN];//已访问的坐标
int n,m;
int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
void dfs(int x,int y){
    if(x<0||x>=n||y<0||y>=m||tdi[x][y]!='W'||vis[x][y]){
        return;
    }
    vis[x][y]=1;//标记已访问
    for(int i=0;i<8;i++){
        int nx=x+dir[i][0];
        int ny=y+dir[i][1];
        dfs(nx,ny);
    }
}
int main() {
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%s",tdi[i]);
        }
        memset(vis,0,sizeof(vis));
        int count=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(tdi[i][j]=='W'&&!vis[i][j]){
                count++;
                dfs(i,j);
                }
            }
        }
    printf("%d\n",count);
    return 0;
}

全部评论

相关推荐

二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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