POJ 2386 Lake Counting

链接:http://poj.org/problem?id=2386


Lake Counting

Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 24263 Accepted: 12246

Description

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.

Input

* 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.

Output

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


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

Hint

OUTPUT DETAILS:

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

Source

USACO 2004 November


大意——给你一个n*m的矩形网格。每一个格子里面要么是‘W’。要么是‘.’,它们分别表示水和旱地。

如今要你计算出有多少个池塘。

每一个池塘由若干个水组成,水能连接的方向有8个,仅仅要是能连接到的水都属于一个池塘。


思路——一个简单的DFS题。我们将所有的网格所有遍历一次,假如我们找到一个池塘的源头,就能够进行一次计数。而且将眼下找到的池塘源头标记为‘.’,那么下一次就不会反复訪问了。再从八个方向进行深搜,将能到达相邻的‘W’所有标记,以免反复訪问。这样最后得到的计数就是答案。


复杂度分析——时间复杂度:O(n*m),空间复杂度:O(n*m)


附上AC代码:


#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <set>
#include <map>
//#pragma comment(linker, "/STACK:102400000, 102400000")
using namespace std;
typedef unsigned int li;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const double pi = acos(-1.0);
const double e = exp(1.0);
const double eps = 1e-8;
const int maxn = 105;
const int dir[8][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}, {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}; // 8个方向
int n, m; // 矩形的行列
char mat[maxn][maxn]; // 矩形void dfs(int x, int y); // 深度优先搜索int main()
{ios::sync_with_stdio(false);while (~scanf("%d%d", &n, &m)){int cnt = 0;for (int i=0; i<n; i++)scanf("%s", mat[i]);for (int i=0; i<n; i++)for (int j=0; j<m; j++)if (mat[i][j] == 'W'){ // 找到池塘源头,计数并深搜cnt++;dfs(i, j);}printf("%d\n", cnt);}return 0;
}void dfs(int x, int y)
{mat[x][y] = '.'; // 訪问过了。标记for (int i=0; i<8; ++i) // 从八个方向找相邻的if (x+dir[i][0]>=0 && x+dir[i][0]<n && y+dir[i][1]>=0 &&y+dir[i][1]<m && mat[x+dir[i][0]][y+dir[i][1]]=='W')dfs(x+dir[i][0], y+dir[i][1]); // 找到相邻的,继续深搜
}


转载于:https://www.cnblogs.com/liguangsunls/p/7054945.html

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

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

相关文章

计算机窗口颜色不能自定义,用RBG颜色设置自定义颜色

这个是Mac自带的测色计快捷键shift command c即可复制RBG格式的颜色#DD0000 这个是csdn 的logo里的红色我们得到的是十六位颜色代码但是UIColor()只有这几种初始化方式init(white: CGFloat, alpha: CGFloat)init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, al…

http协议和浏览器缓存问题

HTTP是超文本传输协议。 HTTP是一个应用层协议&#xff0c;由请求和响应构成&#xff0c;是一个标准的客户端服务器模型。HTTP是一个无状态的协议。 转载于:https://www.cnblogs.com/hodgson/p/6128003.html

Spring3国际化和本地化

我最近想将Spring 3提供的国际化和本地化功能添加到我当前的项目之一中。 我浏览了Spring文档&#xff0c;然后在Internet上搜索以找到一些资源。 但是我找不到能够满足客户要求的资源。 大多数教程都像hello world应用程序&#xff0c;它提供了基本的理解。 即使是spring文档&…

h3c交换机 查看二层交换机端口ip_【分享】项目中如何选到称心如意的交换机?...

项目中如何选择交换机&#xff1f;这七个步骤不能少如何选择交换机&#xff1f;如何根据项目确定网络结构&#xff1f;我们在做大部分项目都有这样的疑问&#xff0c;交换机做为弱电中最常用的设备之一&#xff0c;关于他的使用与选择&#xff0c;不得不知&#xff0c;本期我们…

SSH中一些典型的问题

struts2 1-1&#xff1a;为什么每次请求都要创建一个Action对象&#xff1f; 是出于对线程安全的考虑&#xff0c;每个request都不会相互影响 1-2&#xff1a;ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题&#xff1f; 先把旧的model对象从ValueStack…

为什么计算机连接不上打印机,为什么电脑连接打印机后却没反应

2013-12-12我的笔记本怎么连接不了打印机 显示是这样的好&#xff1a;以下方法供您参考&#xff1a;看一下您的系统服务中这两个(最上面 和最下面的是不是没启用)总之是您的局域网连接没有连接上&#xff0c;要不在网上邻居里您会看到其他的机器的&#xff0c;这是搜到的解决的…

JavaFX 2.0布局窗格– BorderPane

BorderPane非常适合开发更复杂的布局。 通常&#xff0c; BorderPane提供五个不同的区域&#xff1a;顶部&#xff0c;右侧&#xff0c;底部&#xff0c;左侧和中央。 您可以通过调用setTop/setBottom/set…方法将Node设置到每个区域。 这种方法使开发“类似于网站”的应用程序…

页面排版简单样式

页面排版简单样式demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"zh-cn"> &l…

JavaWeb基础(jsp初识)

jsp, java server page jsp页面是在服务器上运行的一个页面 动态网页 与后台有数据交互的页面 与其他语言的区别: jsp 使用java语言进行开发, 安全性高, 适合大型项目, 企业级的文本应用分布式项目, 服务器集群, hadoop asp.net 使用c#, .Net平台, 简单易用, 因为不开源, 所以安…

nao机器人拆解_一些机器人硬件网站

以前收集过一些网站&#xff0c;偏机器人机械结构、硬件、参数(也有模拟或算法)。在 https://www.zhihu.com/question/19826366 也夹杂着一些网址&#xff0c;但是有些网址没有深入的内容&#xff0c;排版也不好&#xff0c;所以 在这里编辑成一个列表&#xff0c;方便归档。欢…

心电图是模拟计算机吗,心电图仪

心电图仪是由威廉爱因托芬(W. Einthoven,1860-1927)发明的。 什么是心电图仪(机)M311986 心电图仪能将心脏活动时心肌激动产生的生物电信号(心电信号)自动记录下来&#xff0c;为临床诊断和科研常用的医疗电子仪器。国内一般按照记录器输出道数划分为&#xff1a;单道、三道、六…

从Java 8启动项目拼图?

在马克雷因霍尔德 &#xff08; Mark Reinhold &#xff09;在他的《 项目拼图&#xff1a;火车晚点 》一文中提出“将项目拼图推迟到Java 9的下一个发行版中”。 他解释了这样做的原因&#xff1a;“仍然存在一些重大的技术挑战”&#xff0c;并且“没有足够的时间来进行广泛的…

ChannelOption用到的socket的标准参数

ChannelOption.SO_BACKLOG, 1024 BACKLOG用于构造服务端套接字ServerSocket对象&#xff0c;标识当服务器请求处理线程全满时&#xff0c;用于临时存放已完成三次握手的请求的队列的最大长度。如果未设置或所设置的值小于1&#xff0c;Java将使用默认值50。 ChannelOption.SO_K…

cbrt c语音_isgraph - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

在头文件中定义int isgraph(int ch);检查给定字符是否具有图形表示形式&#xff0c;即它是数字(0123456789)&#xff0c;大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)&#xff0c;小写字母(abcdefghijklmnopqrstuvwxyz)或标点符号(!"#$%&()*,-./:;<>?[\]^_{|}~)或特定…

计算机的内存和cpu,内存与CPU二者之间的关系_Intel服务器CPU_服务器产业-中关村在线...

“在一起&#xff0c;在一起”&#xff0c;相信这也是很多人希望的结果&#xff0c;无论是从技术角度&#xff0c;还是从空间角度&#xff0c;似乎二者都有着很多理由被放在一起完成任务。但是&#xff0c;二者为何一直没有“在一起”呢&#xff1f;也许这句歌词可以回答原因&a…

JUnit,Logback,带有Maven 3的Maven

在本系列中&#xff0c;我们已经学习了建立基本的Spring MVC应用程序并学习了如何在Spring MVC中处理表单 。 现在该讨论更多涉及的主题了。 但是&#xff0c;在我们涉足更深的领域之前&#xff0c;让我们先进行一些基础设置。 单元测试 我不是TDD传播者。 我在那里说了。 我从…

Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识

就想收藏一篇好文&#xff0c;哈哈&#xff0c;无他 Gradle中的buildScript代码块 - 黄博文 然后记录一些gradle的基础知识&#xff1a; 1.gradle wrapper就是对gradle的封装&#xff0c;可以理解为项目内部内置了gradle 2.dependencies的参数 上官方参数表https://docs.gradle…

phonegap工程中修改app的名字

针对phonegap比较高的版本&#xff0c;我的是6.4.0。 在phonegap工程中&#xff0c;当添加了iOS和android平台或多个平台后&#xff0c;工程进行了开发&#xff0c;然后觉得app的名字想修改一下&#xff08;比如在手机上显示的app名字&#xff0c;或者通过ipa导入安装或者apk包…

ac ap方案 华为_华为无线_AC+AP小型无线网络配置实验_v1

【如果在实验中有什么疑问&#xff0c;欢迎关注微信公众号“IT后院”给我留言&#xff0c;我会抽空回答你的问题】华为无线-ACAP小型无线网络配置实验_v1网络结构图&#xff1a;步骤一&#xff1a;配置网络连通性SW:interface Vlanif100ip address 192.168.0.1 255.255.255.0in…

css类选择器或逻辑,深入理解CSS中选择器的逻辑处理

在过去的很长一段时间中&#xff0c;我们都说 CSS 是不带有任何逻辑的&#xff0c;意思是在 CSS 中没有控制流&#xff0c;也没有某种类似于其他编程语言的方式来组织 CSS。CSS 天生缺乏逻辑性的问题导致了预处理器的出现。然而业界却对 CSS 预处理器褒贬不一&#xff0c;支持预…