Openjudge1388 Lake Counting【DFS/Flood Fill】

http://blog.csdn.net/c20182030/article/details/52327948

1388:Lake Counting

总时间限制: 
 1000ms 
 内存限制: 
 65536kB
描述
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.
样例输入
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
提示
OUTPUT DETAILS:

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

来源
USACO 2004 Novembe
题目大意  
大雨过后,农夫John的农场被水淹没不知所措有了积水,农场地图中‘W’代表积水,‘.‘代表干燥的土地。八连通的积水在同一个水洼里。农夫John想知道农场里有多少水洼。
这是一道搜索题。与其他搜索题一样,都是不断地搜索,直到达到目的。但是,这道题的目的是什么呢?
目的是求出有多少水洼,如果递归的话,怎么才能知道求出了数量呢?
所以这样,不能单纯的只调用一次函数(主程序中),否则最多只会找出一个水洼。
我一开始是这样想的,把每个水洼只留下一个W,其余换成干燥,最后再看有几个W。可是这样搜索的时候,留下的W也会被搜到,搜到就会变成‘.‘,答案就会是0。为了避免这个问题,需要设立一个辅助数组或者把这个W换成另一个字符,但是这样既浪费时间也浪费空间(还浪费我的脑容量)。
于是我把函数写在循环里,把一个水洼消灭干净后,水洼数量就加1。我用DFS,BFS实现了这个想法。
时间: 2024-10-09 19:43:24

Openjudge1388 Lake Counting【DFS/Flood Fill】的相关文章

SSOJ 2316 面积【DFS/Flood Fill】

题目描述 编程计算由“1”号围成的下列图形的面积.面积计算方法是统计1号所围成的闭合曲线中点的数目. 如图所示,在10*10的二维数组中,“1”围住了15个点,因此面积为15. 题目大意:对于给定的10*10的01矩阵,请问有多少个0被1包围了?(包围是指不能由上下左右通向边缘)本文来源于OIER博客,原文出处:http://www.oier.cc/ssoj2316%E9%9D%A2%E7%A7%AF/ 解题思路 图形学中Flood Fill是满水法填充,是用来填充区域的.就好比在一个地方一直到

小白书 黑白图像【DFS/Flood Fill】

http://blog.csdn.net/u010470972/article/details/33415617 Description 输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如下图所示的图形有3个八连块. Input 第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串. Output 在输入黑白图像中,八连块的个数 Sample Input 6 100100 

洛谷 P1506 拯救oibh总部【DFS/Flood Fill】

题目背景 oibh总部突然被水淹没了!现在需要你的救援…… 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去的……现在给出oibh的围墙建设图,问oibh总部没被淹到的重要区域(由”0”表示)有多少. 输入输出格式 输入格式: 第一行是两个数,x和y(x,y<=500) 第二行及以下是一个由*和0组成的x*y的图. 输出格式: 输出没被水淹没的oibh总部的“0”的数量. 输入输出样例 输入样例#1: 样例输

POJ2386 Lake Counting 【DFS】

Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20782   Accepted: 10473 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 <= 10

【POJ - 2386】Lake Counting (dfs+染色)

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

POJ 2386 Lake Counting【BFS】

题意:给出一个矩形,问有多少块连通的W 当找到W的时候,进行广搜,然后将搜过的W变成点,直到不能再搜,进行下一次广搜,最后搜的次数即为水塘的个数 看的PPT里面讲的是种子填充法. 种子填充算法: 从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止.如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止 对于这一题: 先枚举矩阵中的每一个元素,当元素为W的时候,对它进行种子填充(BFS) 种子填充过程: 1)将八个方向的状态分别加进队列 2)如果元素为W,将其

【DFS好题】BZOJ1999- [Noip2007]Core树网的核(数据加强版)

NOIP的数据好水,一开始有好几个错结果NOIP数据就水过了?? [题目大意] 求无根树的直径上一段不超过S长的链,使得偏心距最小.具体概念见原题. [思路] 首先明确几个性质: (1)对于树中的任意一点,距离其最远的点一定是树的直径的某一端点. (2)所有的直径是等价的,即任意一条所能求出的该最小偏心距相等. 于是我们可以用两次dfs求出直径.任取一个点找到离它最远的点r,再从r找到距离它最远的点l.l到r的路径就是直径. 显然在长度不超过S的情况下,链最长最好.在l到r上维护尽可能长的链,找

【HDU4366】【DFS序+分块】Successor

Problem Description Sean owns a company and he is the BOSS.The other Staff has one Superior.every staff has a loyalty and ability.Some times Sean will fire one staff.Then one of the fired man’s Subordinates will replace him whose ability is higher th

UVA 524 素数环 【dfs/回溯法】

Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers 1,2,3,...,n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number of first circle should alwa