POJ2386 Lake Counting
来源:互联网 发布:阿拉伯语自学软件 编辑:程序博客网 时间:2024/04/29 22:59
Description
Given a diagram of Farmer John's field, determine how many ponds he has.
Input
* 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
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
There are three ponds: one in the upper left, one in the lower left,and one along the right side.
Source
【题意简述】
给出一个M*N的地图,有些地方被雨淹了。
问这些被淹没的地方形成了多少个池塘(连同块)?
( M,N<=100,这里规定任意格子周围的八个格子都是与它相邻的 )
用dfs+染色来实现:
其实和JOJ那道OIL 是一模一样的
#include<stdio.h>
char str[101][101];
int x[8]={-1,0,1,-1,1,-1,0,1},y[8]={-1,-1,-1,0,0,1,1,1};
int num,m,n;
void dfs(int x1,int y1)
{
int i;
str[x1][y1]='.';
for(i=0;i<8;i++)
if(x1+x[i]<m && x1+x[i]>=0 && y1+y[i]<n && y1+y[i]>=0 && str[x1+x[i]][y1+y[i]]=='W')
dfs(x1+x[i],y1+y[i]);
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
num=0;
for(int i=0;i<m;i++)
scanf("%s",str[i]);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(str[i][j]=='W')
{
dfs(i,j);
num++;
}
printf("%d/n",num);
}
return 0;
}
- POJ2386 Lake Counting
- POJ2386:Lake Counting(DFS)
- poj2386 Lake Counting DFS
- poj2386 Lake Counting
- poj2386 Lake Counting
- POJ2386 Lake Counting(DFS)
- poj2386 Lake Counting
- POJ2386 Lake Counting 【DFS】
- Lake Counting--poj2386
- poj2386 Lake Counting
- POJ2386 Lake Counting
- POJ2386-Lake Counting
- POJ2386 Lake Counting
- POJ2386 Lake Counting
- POJ2386 Lake Counting (dfs)
- POJ2386 Lake Counting(dfs)
- POJ2386.Lake Counting
- poj2386 Lake Counting【DFS】
- VC6打开文件时错误
- Berkeley DB 1.8.6源代码学习(八)
- 详析VC中坐标系的建立
- 堆和栈
- linux的GPIO应用实例
- POJ2386 Lake Counting
- DBhelper有些不懂,请各位指教
- 根文件系统制作 busybox移植
- INSERT INTO 语句 中的 引号问题
- 解析动态联编
- Javascript验证练习。请求师兄修改bug 。出错时候为什么不能显示 “确定”按钮??
- Firefox下拖拽客户端文件到浏览器达到上传效果的实现(java例)
- js屏蔽按键
- 2010年4月1日愚人节弄的Oracle数据库问题!以及其他的思想