洛谷 P1596 [USACO10OCT]Lake Counting S-dfs

题目描述

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.

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

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.

第1行:两个空格隔开的整数:N 和 M 第2行到第N+1行:每行M个字符,每个字符是’W’或’.’,它们表示网格图中的一排。字符之间没有空格。
输出格式

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

一行:水坑的数量

输入:

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

解题思路:
找到一个W,从这个W开始dfs,把8个方向的W都消除,然后继续找W,计算次数。

代码如下:

#include <iostream>
using namespace std;
const int N = 110;
int ans;int dx[] = {0, 0, 1, -1, 1, -1, 1, -1};int dy[] = {1, -1, 0, 0, -1, -1, 1, 1};
char g[N][N];
int n, m;void dfs(int x, int y) {g[x][y] = '.';for (int i = 0; i < 8; i++) {int xx = x + dx[i], yy = y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < m && g[xx][yy] == 'W') {dfs(xx, yy);}}
}int main() {cin >> n >> m;for (int i = 0; i < n; i++)cin >> g[i];for (int i = 0; i < n; i++)for (int j = 0; j < m; j++) {if (g[i][j] == 'W') {dfs(i, j);ans++;}}cout << ans << endl;return 0;
}

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

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

相关文章

国籍 mysql_国籍表SQL,按首字母升序排序

-- phpMyAdmin SQL Dump-- version phpStudy 2014---- 主机: localhost-- 生成日期: 2015 年 12 月 16 日 14:45-- 服务器版本: 5.5.40-- PHP 版本: 5.3.29SET SQL_MODE"NO_AUTO_VALUE_ON_ZERO";SET time_zone "00:00";;;;;---- 数据库: test---- -------…

Abp vNext发布v2.3!

在全球范围内病毒笼罩的日子里,我们发布了ABP框架v2.3, 这篇文章将说明本次发布新增内容和过去的两周我们做了什么.关于新冠病毒和我们的团队关于冠状病毒的状况我们很难过.在Volosoft的团队,我们有不同国家的远程工作者在自己家里工作.从上周开始,我们已经完全开始在家远程工作…

python可以生成ios应用嘛_用python编写ios应用

自从发现了kivy这个东西,就动了用pyhon写ios程序的念头,因为python确实好写,而且我只会这个,懒得去学object-C..不过具体开始搭环境却折腾了好久,我都快放弃了,不过最后还是搭了出来,分享一些心得吧. 1.首先是mac osx环境,这个用虚拟机就行,网上教程很多 2.接下来就是安装Xcode…

[蓝桥杯][算法提高VIP]质数的后代-质数筛

题目描述 在上一季里&#xff0c;曾提到过质数的孤独&#xff0c;其实从另一个角度看&#xff0c;无情隔膜它们的合数全是质数的后代&#xff0c;因为合数可以由质数相乘结合而得。 如果一个合数由两个质数相乘而得&#xff0c;那么我们就叫它是质数们的直接后代。现在&#xf…

ASP.NET Core 中间件分类

ASP.NET Core 中间件的配置方法可以分为以上三种&#xff0c;对应的Helper方法分别是&#xff1a;Run(), Use(), Map()。Run()&#xff0c;使用Run调用中间件的时候&#xff0c;会直接返回一个响应&#xff0c;所以后续的中间件将不会被执行了。Use()&#xff0c;它会对请求做一…

redis持久化到mysql的方案_redis进阶: 数据持久化

redis是内存数据库&#xff0c;即数据库状态都是存储于内存中&#xff0c;因此&#xff0c;当服务器重启或者断开后&#xff0c;数据便会丢失&#xff1b;为了解决数据丢失问题&#xff0c;便需要将数据从内存保持到磁盘中&#xff0c;这就是redis的数据持久化目前&#xff0c;…

《C++ Primer》7.1.2节练习(部分)

练习7.4: class Person {private:string strName;//姓名string strAddress;//地址 };练习7.5: class Person {private:string strName;string strAddress;public:string getName()const{return strName;}string getAddress() const{return strAddress;} };上述两个函数应该被…

如何创建一个自定义的`ErrorHandlerMiddleware`方法

在本文中&#xff0c;我将讲解如何通过自定义ExceptionHandlerMiddleware&#xff0c;以便在中间件管道中发生错误时创建自定义响应&#xff0c;而不是提供一个“重新执行”管道的路径。作者&#xff1a;依乐祝译文&#xff1a;https://www.cnblogs.com/yilezhu/p/12497937.htm…

《C++ Primer》7.1.3节练习

练习7.6: #include <iostream> using namespace std;Sales_data add(const Sales_data &lhs,const Sales_data &rhs) {Sales_data sum lhs;sum.combine(rhs);return sum; }std::istream &read(std::istream &is ,Sales_data &item) {is>>ite…

mysql or中有空查询慢_MySQL 慢查询日志

1.定义2.相关参数2.开启3.原因4.慢查询日志工具mysqldumpslow1.定义作用:用来记录在MySQL中响应时间超过阀值的语句。2.相关参数mysql> show variables like %slow_query%;------------------------------------------------------------| Variable_name | Value …

从业务需求抽象成模型解决方案

从业务需求调研&#xff0c;通过抽象转换成模型技术方案&#xff0c;本文将对这个过程做个拆解&#xff0c;供大家参考。以下我所说的可能都是错的&#xff0c;只是一家之见&#xff0c;欢迎大家在留言区多提意见和看法&#xff0c;互相共勉。一、订单对象-信息需求公司的运营都…

《C++ Primer》7.1.4节练习

练习7.11: #include <iostream> #include <cstring> using namespace std;class Sales_data {public:Sales_data() default;Sales_data(const std::string &book): bookNo(book) {}Sales_data(const std::string &book, const unsigned num, const doubl…

DotNetCore Web应用程序中的Session管理

原文来自互联网&#xff0c;由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权&#xff0c;请联系小编&#xff0c;小编将在24小时内删除。限于译者的能力有限&#xff0c;个别语句翻译略显生硬&#xff0c;还请见谅。作者简介&#xff1a;Jon&#xff08;Jonathan&#x…

css3是什么 ptml_CSS3

CSS3HTMLCSSJavaScript结构表项交互如何学习&#xff1f;CSS是什么CSS怎么用(快速入门)CSS选择器(重点难点)美化网页(文字、阴影、超链接、列表、渐变...)盒子模型浮动定位网页动画(特效效果)1、初识CSS1.1、什么是CSSCascading Style Sheet(层叠样式表)CSS&#xff1a;表现(美…

《C++ Primer》7.2节练习

练习7.16: 在类的定义中&#xff0c;可以包含0个或者多个访问说明符&#xff0c;并且对于某个访问说明符能出现多少次以及能出现在哪里都没有严格规定。每个访问说明符指定接下来的成员的访问级别&#xff0c;有效范围直到出现下一个访问说明符或者到达类的结尾为止。 一般来说…

python docx runs_别再问我Python怎么操作Word了!

安装docx是一个非标准库&#xff0c;需要在命令行(终端)中使用pip即可安装pip install python-docx一定要注意&#xff0c;安装的时候是python-docx而实际调用时均为docx!前置知识Word中一般可以结构化成三个部分&#xff1a;文档Document段落Paragraph文字块Run也就是Document…

【要闻】如何基于K8s管理1600个微服务?某数字化银行秘诀公开

Cloud Foundry Foundation宣布KubeCF为新孵化项目Cloud Foundry Foundation是开放源代码项目的聚集地&#xff0c;简化了开发人员的体验&#xff0c;近日其宣布&#xff0c;KubeCF已成为该基金会的孵化项目&#xff0c;并已发布版本1.0.1。KubeCF是Cloud Foundry应用程序运行时…

《C++ Primer》7.2.1节练习

练习7.20: 当非成员函数确实需要访问类的私有成员时&#xff0c;我们可以把它声明成该类的友元。此时&#xff0c;友元可以“工作在类的内部”&#xff0c;像类的成员一样访问类的所有数据和函数。但是一旦使用不慎&#xff08;比如随意设定友元&#xff09;&#xff0c;就有可…

python常用字符串方法调用语法_Python3常用的字符串方法

判断是否全是字母"python".isalpha() # 返回True"2python".isalpha() # 返回False根据分隔符分割字符串a "I,LOVE,PYTHON"a.split(",")# 结果&#xff1a;[I,LOVE,PYTHON]去掉字符串两头的空格及回车符str.strip() # 去掉字符串两边的…

如何用 Blazor 实现 Ant Design 组件库?

本文主要分享我创建 Ant Design of Blazor 项目的心路历程&#xff0c;已经文末有一个 Blazor 线上分享预告。Blazor WebAssembly 来了&#xff01;Blazor 这个新推出的前端 Web 框架&#xff0c;想必是去年 .NET Core 3.0 发布时才进入 .NET 开发者的视线的。但其实&#xff0…