NOI 题库 1388
Posted struct Edge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOI 题库 1388相关的知识,希望对你有一定的参考价值。
Lake Counting
- 描述
- 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 November
-
1 #include "bits/stdc++.h" 2 3 using namespace std ; 4 const int maxN = 210 ; 5 6 const int dx[ 10 ] = { 0 , 0 , 1 , 1 , 1 , -1 , -1 , -1 } ; 7 const int dy[ 10 ] = { 1 , -1 , 1 , 0 , -1 , 1 , 0 , -1 } ; 8 9 int mp[ maxN ][ maxN ] ; 10 11 void DFS ( const int xi , const int yi ) { 12 if ( !mp[ xi ][ yi ] )return ; 13 mp[ xi ][ yi ] = false ; 14 for ( int i=0 ; i<8 ; ++i ) { 15 int xx = xi + dx[ i ] ; 16 int yy = yi + dy[ i ] ; 17 DFS( xx , yy ) ; 18 } 19 } 20 21 int main ( ) { 22 int N , M ; 23 int _cnt = 0 ; 24 scanf ( "%d%d" , &N , &M ) ; 25 getchar ( ) ; 26 for ( int i=1 ; i<=N ; ++i ) { 27 for ( int j=1 ; j<=M ; ++j ) { 28 if ( getchar ( ) == \'W\' ) mp[ i ][ j ] = true ; 29 } 30 getchar ( ) ; 31 } 32 33 for ( int i=1 ; i<=N ; ++i ) { 34 for ( int j=1 ; j<=M ; ++j ) { 35 if ( mp[ i ][ j ] ) { 36 _cnt ++ ; 37 DFS ( i , j ) ; 38 } 39 } 40 } 41 cout << _cnt << endl ; 42 return 0 ; 43 }
2016-10-19 00:25:45
(完)
以上是关于NOI 题库 1388的主要内容,如果未能解决你的问题,请参考以下文章