Lake counting
Time limit:1000 ms |
|
Memory limit:65536 K |
Total submissions:19591 |
|
Accepted:9848 |
Description
Due to recent rains, water has pooled in varous 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 wowould like to figure out How sort 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 distriof Farmer John's field, determine how he 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
Search for questions. Do not explain !!!!!!!!
The AC code is as follows:
#include<stdio.h>#include<string.h>int x[8]={0,1,1,1,0,-1,-1,-1};int y[8]={-1,-1,0,1,1,1,0,-1};int n,m;char b[105][105];void sreach(int h,int z){ int i; b[h][z]='.'; for(i=0;i<8;i++) { if(b[h+x[i]][z+y[i]]=='W') sreach(h+x[i],z+y[i]); }}int main(){ int i,j,cont; while(~scanf("%d %d",&n,&m)) { memset(b,0,sizeof(b)); cont=0; for(i=0;i<n;i++) { scanf("%s",b[i]); } for(i=0;i<n;i++) for(j=0;j<m;j++) { if(b[i][j]=='W') {cont++;sreach(i,j);} } printf("%d\n",cont); } return 0;}