首页 > 其他分享 >湖泊计数

湖泊计数

时间:2023-01-11 23:11:22浏览次数:37  
标签:.. ny int 湖泊 ++ WW 计数 &&

描述

由于最近的降雨,水在农夫约翰的田地里的各个地方都聚集了,它由一个 N x M (1 <= N <= 100; 1 <= M <= 100) 正方形的矩形表示。每个方块包含水(“W”)或旱地(“.”)。农夫约翰想弄清楚他的田地里形成了多少个池塘。池塘是一组相连的正方形,其中有水,其中正方形被认为与其所有八个邻居相邻。

给定农夫约翰的田地图,确定他有多少个池塘。

输入

* 第 1 行:两个空格分隔的整数:N 和 M * 第 2..N+1 行:每行 M

个字符,代表一行农夫约翰的田地。每个字符都是“W”或“.”。字符之间没有空格。

输出

* 第 1 行:农夫约翰田地中的池塘数量。

示例输入

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

示例输出

3
#include<bits/stdc++.h>
using namespace std;
int n,m;
char f[105][105];
void dfs(int x,int y){
    f[x][y]='.';
    for(int dx = -1; dx <= 1; dx++){
        for(int dy = -1; dy <= 1; dy++){
            int nx = x + dx;
            int ny = y + dy;
            if(nx >= 0 && nx < n && ny >= 0 && ny < m && f[nx][ny] == 'W'){
                dfs(nx,ny);
            } 
        }
    }
    return ;
}
int main(){
    cin>>n>>m;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            cin>>f[i][j];
        }
    }
    int ans=0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(f[i][j] == 'W'){
                dfs(i,j);
                ans++;
            }
        }
    }
    cout<<ans;
    return 0; 
}

 

标签:..,ny,int,湖泊,++,WW,计数,&&
From: https://www.cnblogs.com/8023yyl/p/17045166.html

相关文章