zoukankan      html  css  js  c++  java
  • Lake Counting

    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 41340   Accepted: 20504

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

    Source

    //深度优先的典型题,大致意思是说找水坑
     1 #include<iostream>
     2 using namespace std;
     3 char field[400][411];
     4 int n, m;
     5 void dfs(int i, int j)
     6 {
     7     field[i][j] = '.';
     8     for(int dx=-1;dx<=1;dx++)
     9         for (int dy = -1; dy <= 1; dy++)
    10         {
    11             int k = i + dx, kk = j + dy;
    12             if (k >= 0 && k < n&& kk < m&&kk >= 0 && field[k][kk] == 'W')
    13                 dfs(k, kk);
    14         }
    15     return;
    16 }
    17 int main()
    18 {
    19     int mark = 0;
    20     cin >> n >> m;
    21     for (int i = 0; i < n; i++)
    22         for (int j = 0; j < m; j++)
    23             cin >> field[i][j];
    24     for(int i=0;i<n;i++)
    25         for (int j = 0; j < m; j++)
    26             if (field[i][j] == 'W')
    27             {
    28                 dfs(i, j);
    29                 mark++;
    30             }
    31     cout << mark << endl;
    32     return 0;
    33 }

    真正意义上的第一个深度题,代码不是很难理解,可是感觉掌握起来有点小麻烦;

    还需多练习

  • 相关阅读:
    nginx使用vhost子目录
    nginx服务报错解决
    反向代理远端 单台tomcat 使用域名代理
    反向代理远端 单台tomcat 使用ip+端口
    nginx反向代理本地 两台web负载均衡 使用域名代理
    nginx反向代理本地 两台web负载均衡 使用ip+端口代理
    nginx反向代理本地 单台wed -使用域名代理
    nginx反向代理本地 单台wed -使用ip+端口代理
    php 在函数内引用全局变量 讲解引用
    Xdebug的安装与使用
  • 原文地址:https://www.cnblogs.com/kangdong/p/8727705.html
Copyright © 2011-2022 走看看