首页 > 试题广场 >

数水坑

[编程题]数水坑
  • 热度指数:1979 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
{\hspace{15pt}}由于降雨,水在农夫约翰的田地里积聚成水坑。田地是一个 N\times M 的矩形网格,每个格子要么是水 `W`,要么是干地 `.`。
{\hspace{15pt}}若两个水格子在 八连通 (上下左右及四条对角线)意义下互达,则它们属于同一个水坑。
{\hspace{15pt}}给出田地示意图,计算水坑数量。

输入描述:
{\hspace{15pt}}第一行输入两个整数 N,M\left(1\leqq N,M\leqq 100\right)
{\hspace{15pt}}接下来 N 行,每行 M 个字符组成的字符串,字符集为 `W` 与 `.`,中间无空格。


输出描述:
{\hspace{15pt}}输出一行一个整数,即水坑的数量。
示例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

说明

共有三个水塘:一个在左上角,一个在左下角,还有一个沿着右侧。
头像 牛客568956019号
发表于 2025-08-14 18:32:21
n,m = input().split(" ") n,m = int(n),int(m) matrix = [] for i in range(n): a = list(input()) matrix.append(a) count = 0 visited = 展开全文
头像 N_zip
发表于 2025-07-16 09:51:32
#include <bits/stdc++.h> using namespace std; char a[110][110]; int n, m; int ans = 0; // 用于记录水坑数量 int dx[] = {0, 0, 1, -1, -1, 1, -1, 1}; int 展开全文
头像 ikun_ac
发表于 2025-08-08 22:12:33
题目链接 数水坑 题目描述 给定一个 的矩形网格,网格中的每个格子要么是水 W,要么是干地 .。若两个水格子在八连通(上下左右及四个对角方向)意义下互达,则属于同一个水坑。请计算水坑的数量。 输入: 第一行两个整数 、 接下来 行,每行一个长度为 的仅包含 W 与 . 的字符串 输出: 展开全文
头像 饥饿的中国人offer多多
发表于 2025-08-07 19:29:04
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static int n, m; // 记录地图 public static char[][ 展开全文
头像 lahm66
发表于 2025-10-09 10:18:35
dfs import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void dfs(char[][] chs,int i,int j){ 展开全文
头像 Bobby兔
发表于 2025-08-18 09:29:20
import sys N, M = map(int, input().split()) visited = [] for _ in range(N): row = input() visit_row = [False if s == 'W' else True for 展开全文
头像 niuke9999
发表于 2025-12-05 19:09:13
#include <stdio.h> int main(void) { int n, m; scanf("%d%d", &n, &m); char ch[105][105]; for (int i = 0; i &l 展开全文
头像 小胡放轻松
发表于 2025-12-11 02:07:35
/*基本思路是通过外层两个遍历遍历矩阵,并设置res初值为0,对每一个外层遍历水坑,这里体现为值为0,将其置为2并使res++,同时调用DFS函数将其周围8联通的格子置为2并对8联通的格子递归执行dfs,当外层遍历结束时res值即为答案 */ #include <iostream> #i 展开全文
头像 学习小生
发表于 2025-09-21 10:43:59
from collections import deque n,m = map(int,input().split()) graph = [] for i in range(n): graph.append(list(input())) count = 0 visited = [[False 展开全文
头像 牛客69596014号
发表于 2025-12-02 10:24:56
import java.util.Scanner; public class Main{ static int[][]dirs={{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; public static void m 展开全文