P1596 [USACO10OCT] Lake Counting S(找连通块数量)

题目描述

Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors. Given a diagram of Farmer John's field, determine how many ponds he has.

输入格式

Line 1: Two space-separated integers: N and M * Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.

输出格式

Line 1: The number of ponds in Farmer John's field.

题意翻译

由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个 �×�(1≤�≤100,1≤�≤100)N×M(1≤N≤100,1≤M≤100) 的网格图表示。每个网格中有水(W) 或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。

输入第 11 行:两个空格隔开的整数:�N 和 �M。

第 22 行到第 �+1N+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.

输出 #1复制

3

说明/提示

OUTPUT DETAILS: There are three ponds: one in the upper left, one in the lower left, and one along the right side.

解题思路

就是找W连通块的数量,具体怎么找,看下面这个图

找到上面三个符合要求的点就用无尽的水去灌溉(DFS),知道没有水域为止。

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<math.h>
#include<iomanip>
#include<set>
#include<queue>
#include<stack> 
#include<map>
#include<list>
#include <stdlib.h>
#include<deque>
using namespace std;
int n, m, ans, v[105][105];//地图大小,连通块计数,记录水域状态
char g[105][105];//图
int a[8][2] = { -1,0,0,1,1,0,0,-1,-1,1,1,1,1,-1,-1,-1 };//八连通,八个反方向灌溉
void dfs(int x, int y)
{for (int i = 0; i < 8; i++){int cx = x + a[i][0], cy = y + a[i][1];if (g[cx][cy] == 'W' && cx < n && cx >= 0 && cy >= 0 && cy < m&&v[cx][cy]==0)判断是否满足灌溉条件{v[cx][cy] = 1;dfs(cx, cy);//不用恢复上一步,因为已经灌溉过了,不用再抽干再灌溉}}
}
int main()
{cin >> n >> m;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> g[i][j];}}for (int i = 0; i < n; i++){for(int j=0;j<m;j++){if (g[i][j] == 'W' && v[i][j] == 0)//找到一个适合的点,开始灌溉{dfs(i, j);ans++;}}}cout << ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的反诈宣传平台

技术&#xff1a;springbootmysqlvue 一、系统背景 反欺诈平台可以对公交信息进行集中管理&#xff0c;可以真正避免传统管理的缺陷。反欺诈平台是一款运用软件开发技术设计实现的应用系统&#xff0c;在信息处理上可以达到快速的目的&#xff0c;不管是针对数据添加&#xff…

如何学好Python语言

学习Python&#xff1a;一场充满探索与实践的编程之旅 Python&#xff0c;作为一种解释型、交互式和面向对象的编程语言&#xff0c;近年来在数据科学、人工智能、Web开发等多个领域得到了广泛的应用。掌握Python&#xff0c;不仅可以提升个人的编程技能&#xff0c;还能够为未…

页面router路由设计

Vue命名视图 命名视图 | Vue Router

游戏数据模块详解

游戏数据模块详解 MapLayerCellBrand总结 游戏数据模块详解 学习于bilibili 春娇与志明 Map map最顶层的数据模型,也叫地图类。包含所有元素&#xff0c;比如多个图层&#xff0c;消除框&#xff0c;道具之类的内容 Layer 一个Map当中有多个图层Layer,层层遮盖&#xff0…

单目深度估计:从理论到实践

在计算机视觉领域&#xff0c;深度估计是一个非常重要的研究方向。它旨在通过分析图像数据来推断场景中物体的相对或绝对距离。单目深度估计是指仅使用一个摄像头捕获的单一视角图像来估计深度信息&#xff0c;这在自动驾驶、增强现实、机器人导航等领域具有广泛的应用。本文将…

Vue3 进阶

Vue 进阶 前言 Vue3 入门文章地址&#xff1a;Vue3 入门 任务一 创建 Vite Vue3 单页应用 Vue 3 是一个流行的 JavaScript 前端框架&#xff0c;用于构建单页应用程序&#xff08;SPA&#xff09;。 下面是一些创建 Vue 3 单页应用程序的方式&#xff1a; Vue CLI&#…

NCV12711ADNR2G芯片PWM控制器中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV12711是一款固定频率、峰值电流模式PWM控制器&#xff0c;具有实施单端功率转换器拓扑结构所需的必要性能。这款器件工作电压范围4V至45V&#xff0c;无需辅助绕组&#xff0c;且位于热性能范围内。这款控制器包含一个可编程振荡器&#xff0c;能够在…

elasticsearch安装部署

elasticsearch部署 安装elasticsearch1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools 3.安装IK分词器3.1.在线安装ik插件&#xff08;较慢&#xff09;3.2.离线安装ik插件&#xff08;推荐&#xff09;3.3 扩展词词典3.4 停用词词典 4.部署es…

Jmeter接口登录获取参数token报错问题解决方案

Jmeter接口登录时获取到的参数token一直在变的问题&#xff0c;导致运行时总是报错 解决方法如下&#xff1a; 1.新建一个GET的HTTP请求 2.添加正则表达式提取器 记得name"_token" value"(.?) 中间有一个空格&#xff0c;“_token”和value中间的空格&#xf…

Linux第81步_使用“互斥体”实现“互斥访问”共享资源

1、创建MyMutexLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyMutexLED回车”&#xff0c;创建“MyMutexLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹 2、…

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…

进程创建,程序加载运行,以及进程终止,什么是僵尸进程,什么是孤儿进程

进程控制 创建进程&#xff0c;撤销进程&#xff0c;实现进程转换&#xff08;必须一气呵成&#xff0c;使用原语&#xff09; 原语不被中断是因为有关中断指令 创建进程 撤销进程 进程创建fork fork&#xff08;&#xff09;函数会创建一个子进程&#xff0c;子进程会返…

Uibot6.0 (RPA财务机器人师资培训第2天 )采购付款——网银付款机器人案例实战

训练网站&#xff1a;泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff0…

无人机的航向角

无人机的航向角&#xff08;Phi&#xff09;是无人机绕载体坐标系(z_{b})轴转动产生的角度&#xff0c;也可表示为机体坐标系x轴在水平面的投影与地理北方&#xff08;即导航坐标系x轴&#xff09;的夹角。机体绕(z_{b})轴顺时针转动&#xff0c;即飞机右转时&#xff0c;航向角…

网络编程day7

学生管理系统系统 #include <myhead.h> int do_add(sqlite3 *ppDb) {int add_numb0;char add_name[20]"";double add_score0;printf("请输入学号&#xff1a;");scanf("%d", &add_numb);printf("请输入姓名&#xff1a;");…

你要的个性化生信分析服务今天正式开启啦!定制你的专属解决方案!全程1v1答疑!

之前在 干货满满 | 给生信小白的入门小建议 | 掏心掏肺版 中有提到&#xff0c;如果小伙伴们真的想学好生信&#xff0c;那编程能力是必须要有的&#xff01;但是可能有些小伙伴们并没有那么多的时间从头开始学习编程&#xff0c;又或是希望有人指导或者协助完成生信分析工作&a…

牛客周赛22-C-小红的数组构造

好啊,很好啊. 关键点: 1.注意上下界的判断,x要 > 1开头的等差d 1的序列 < k - n 1开头的等差d 1的序列 这里有个细节 原来应该是 x < n * (2 * k - n 1) / 2 但k,x的范围是1e14,这样就爆long long,所以得是x * 2 / n < 2 * k - n 1 2.直接看代码的实现…

如何将来自不同物联网设备的数据集成到一个中央数据存储中

将来自不同物联网设备的数据集成到一个中央数据存储中&#xff0c;通常涉及以下几个步骤&#xff1a; 1. 数据采集 首先&#xff0c;需要从各个物联网设备中采集数据。这通常通过设备提供的API&#xff08;应用程序编程接口&#xff09;来完成。API允许你访问和检索设备生成的…

PyTorch学习笔记目录

PyTorch学习笔记 01.基础函数篇 PyTorch学习笔记之基础函数篇&#xff08;一&#xff09;TensorPyTorch学习笔记之基础函数篇&#xff08;二&#xff09;算子01PyTorch学习笔记之基础函数篇&#xff08;三&#xff09;算子02PyTorch学习笔记之基础函数篇&#xff08;四&#…

【华为OD机试】用连续自然数之和来表达整数【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 一个整数可以由连续的自然数之和来表示。 给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 该整数的…