ITKeyword,专注技术干货聚合推荐

注册 | 登录

POJ2386 Lake Counting 【DFS】

u012846486 分享于 2014-10-29

推荐:poj2386 Lake Counting(简单DFS)

转载请注明出处:http://blog.csdn.net/u012860063viewmode=contents 题目链接:http://poj.org/problemid=1562 Description Due to recent rains, water has

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

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 <= 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

推荐:Poj 2386 Lake Counting

click here~~ ***Lake Counting***Time Limit: 1000MS Memory Limit: 65536K Total Submissions:

* 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

睡前水一水。

#include <stdio.h>
#include <string.h>

#define maxn 102

char G[maxn][maxn];
int n, m;
const int mov[][2] = {0, 1, 0, -1, 1, 0, -1, 
				0, 1, -1, -1, 1, 1, 1, -1, -1};

void DFS(int x, int y) {
	G[x][y] = '.';
	int i, j, nx, ny;
	for(i = 0; i < 8; ++i) {
		nx = x + mov[i][0];
		ny = y + mov[i][1];
		if(nx >= 0 && nx < n && ny >= 0 && ny < m && G[nx][ny] == 'W')
			DFS(nx, ny);
	}
}

int main() {
	int i, j, ret;
	while(scanf("%d%d", &n, &m) == 2) {
		for(i = 0; i < n; ++i)
			scanf("%s", G[i]);
		ret = 0;
		for(i = 0; i < n; ++i)
			for(j = 0; j < m; ++j)
				if(G[i][j] == 'W') {
					DFS(i, j);
					++ret;
				}
		printf("%d\n", ret);
	}
	return 0;
}


推荐:POJ2386

原题连接:http://poj.org/problemid=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18126   Accepted: 9149 Description

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 Joh

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。