zoukankan      html  css  js  c++  java
  • POJ Lake Counting

    最基本的DFS

    Lake Counting

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
    Total Submission(s) : 10   Accepted Submission(s) : 3
    Problem 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
    * 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
     
    Source
    PKU
     
     
     1 #include <iostream>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 
     6 char map[102][102];
     7 int ans=0;
     8 
     9 int dfs(int x,int y)
    10 {
    11     if(map[x][y]=='W')
    12     {
    13         map[x][y]='.';
    14         dfs(x-1,y-1);  dfs(x-1,y); dfs(x-1,y+1);
    15         dfs(x,y-1);                      dfs(x,y+1);
    16         dfs(x+1,y-1); dfs(x+1,y); dfs(x+1,y+1);
    17 
    18         return 1;
    19 
    20     }
    21     else return 0;
    22 }
    23 
    24 
    25 int main()
    26 {
    27     
    28     int m,n;
    29     int i,j;
    30     cin>>m>>n;
    31     ans=0;
    32     memset(map,'.',sizeof(map));
    33     for(i=1;i<=m;i++)
    34         for(j=1;j<=n;j++)
    35         {
    36             cin>>map[i][j];
    37         }
    38 
    39 
    40     for(i=1;i<=m;i++)
    41         for(j=1;j<=n;j++)
    42         {
    43             if(dfs(i,j))
    44                 ans++;
    45         }
    46 
    47 //    cout<<dfs(1,1)<<endl;
    48 
    49     cout<<ans;
    50 
    51 
    52     return 0;
    53 }
  • 相关阅读:

    Android自己主动化測试之Monkeyrunner用法及实例
    递归函数的概念使用方法与实例
    正则、grep、sed、awk
    我的java学习笔记(一)
    mysql经常使用命令总结
    JSP动作--JSP有三种凝视方式
    http长连接和短连接
    StirngUtil工具类 之 邮箱注冊 域名不区分大写和小写方法
    在Eclipse上搭建Cocos2d-x的Android开发环境
  • 原文地址:https://www.cnblogs.com/CKboss/p/3014134.html
Copyright © 2011-2022 走看看