POJ 2386 Lake Counting

题目链接:POJ 2386

Description

由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 100) 的正方形来表示。农场中的每个格子可以用'W'或者是'.'来分别代表积水或者土地,约翰想知道他的农场中有多少池塘。池塘的定义:一片相互连通的积水。任何一个正方形格子被认为和与它相邻的8个格子相连。

给你约翰农场的航拍图,确定有多少池塘

Input

* Line 1: N 和 M

* Lines 2..N+1: M个字符一行,每个字符代表约翰的农场的土地情况。每个字符中间不包含空格

Output

* Line 1: 池塘的数量

Sample Input

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

Sample Output

3

题意

池子是八连通的,问有多少池塘。

题解:

DFS水题中的水题,深搜,从碰到的第一个水格子开始,进入dfs函数,把这个点能到达的所有点都变成.,同时计数++。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>

using namespace std;

typedef long long ll;

const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int N = 2e5 + 5;
//int dir[4][2] = { 1,0,0,1,-1,0,0,-1 };
char feld[110][110];
int n, m;
void dfs(int x, int y) {
    feld[x][y] = '.';
    int nx, ny;
    for(int i(-1);i<2;i++)
        for (int j(-1); j < 2; j++) {
            nx = x + i;
            ny = y + j;
            if (nx >= 0 && ny >= 0 && nx < n&&ny < m&&feld[nx][ny] == '@') {
                dfs(nx, ny);
            }
        }
}
int main() {
    int num;
    while (cin >> n >> m,n) {
        num = 0;
        memset(feld, 0, sizeof(feld));
        for (int i(0); i < n; i++) {
            cin >> feld[i];
        }
        for(int i(0);i<n;i++)
            for (int j(0); j < m; j++) {
                if (feld[i][j] == '@') {
                    dfs(i, j);
                    num++;
                }
            }
        cout << num << endl;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4341次浏览 75人参与
# AI面会问哪些问题? #
28026次浏览 559人参与
# 厦门银行科技岗值不值得投 #
8053次浏览 188人参与
# 你的实习产出是真实的还是包装的? #
20248次浏览 342人参与
# 找AI工作可以去哪些公司? #
9210次浏览 239人参与
# 春招至今,你的战绩如何? #
65577次浏览 583人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15273次浏览 221人参与
# 从事AI岗需要掌握哪些技术栈? #
9043次浏览 311人参与
# 中国电信笔试 #
32021次浏览 292人参与
# 你做过最难的笔试是哪家公司 #
33775次浏览 238人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340878次浏览 2175人参与
# 哪些公司真双非友好? #
69630次浏览 289人参与
# 阿里笔试 #
178680次浏览 1317人参与
# 机械人避雷的岗位/公司 #
62704次浏览 393人参与
# 小马智行求职进展汇总 #
25133次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14734次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22098次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26263次浏览 310人参与
# 应届生第一份工资要多少合适 #
20691次浏览 86人参与
# 沪漂/北漂你觉得哪个更苦? #
9939次浏览 193人参与
# 聊聊你的职场新体验 #
336515次浏览 1895人参与
# HR最不可信的一句话是__ #
6306次浏览 114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务