博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2386 Lake Counting
阅读量:2251 次
发布时间:2019-05-09

本文共 1954 字,大约阅读时间需要 6 分钟。

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 12W........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.

解题思路:

深度优先遍历(或者广度优先遍历)即可,标准思路

#include 
#include
#include
using namespace std;const int MAXN = 110;char theMap[MAXN][MAXN];bool tvisited[MAXN][MAXN];int ans = 0;int N, M;int tx[8] = { 1,-1,1,-1,0,0,-1,1 };int ty[8] = { 0,0,1,1,1,-1,-1,-1 };void dfs_temp(int x, int y) { tvisited[x][y] = true; for (int i = 0; i < 8; ++i) { int newx = x + tx[i]; int newy = y + ty[i]; if (newx >= 0 && newx < N && newy >= 0 && newy < M && !tvisited[newx][newy] && theMap[newx][newy] != '.') { dfs_temp(newx, newy); } }}int main() { fill(tvisited[0], tvisited[0] + MAXN*MAXN, false); cin >> N >> M; for (int i = 0; i < N; ++i) { for (int j = 0; j < M; ++j) { cin >> theMap[i][j]; } } for (int i = 0; i < N; ++i) { for (int j = 0; j < M; ++j) { if (!tvisited[i][j] && theMap[i][j] != '.') { dfs_temp(i, j); ans++; } } } cout << ans << endl; system("PAUSE"); return 0;}

 

转载地址:http://ynxdb.baihongyu.com/

你可能感兴趣的文章
ASP.NET服务器控件与客户端控件OnClientClick和OnClick的用法比较
查看>>
Asp.Net 不同区别的 OnClick ( onserverclick, onclientclick )
查看>>
为什么unix/linux/ubuntu比windows高级(国外专家解答)
查看>>
Installing Software in Ubuntu
查看>>
ubuntu下C编程,编译基础
查看>>
Shell编程基础
查看>>
Ubuntu下千千静听Audacious的安装步骤详解
查看>>
Ubuntu系统下安装实用软件集合
查看>>
饮水思源:Ubuntu用户应关注Debian
查看>>
C#日期格式参考小结
查看>>
VMware虚拟网络相关知识
查看>>
Installing VMware Tools in Ubuntu
查看>>
Visual C# Development Settings
查看>>
DataGridView in Windows Forms – Tips, Tricks and Frequently Asked Questions(FAQ)
查看>>
using PreSqlData.DataProcess;
查看>>
C#注册表的读,写,删除,查找
查看>>
.Net如何统计在线人数
查看>>
Linux的VI编辑器
查看>>
Install IIS 7 on Windows Vista and Windows 7
查看>>
比较GridView,DataList,Repeator ,DetailsView,FormView 的区别
查看>>