zoukankan      html  css  js  c++  java
  • 【首先膜拜大湿】poj-2386-Lake Counting-DFS模板题

    Lake Counting
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 16802   Accepted: 8523

    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
    
    
    题目如上:
    AC代码如下:
    #include<iostream>
    #include<stdio.h>
    
    #define Max 105
    using namespace std;
    
    char f[Max][Max];
    int N ,M;
    void DFS(int x,int y)
    {
        f[x][y] = '.';
        for(int dx = -1; dx <= 1; dx++)
          for(int dy = -1; dy <= 1; dy++)
          {
              int nx, ny;
              nx = x + dx; ny = y + dy;
              if(nx < N&& ny < M&& nx >= 0&& ny >= 0&&f[nx][ny] == 'W') DFS(nx,ny);
          }
    
        return ;
    }
    int main()
    {
        int res = 0,i,j;
        cin>>N;
        cin>>M;
    
        for(i = 0; i < N; i++)
              scanf("%s",&f[i]);
    
        for(int i = 0; i < N; i++)
          for(int j = 0; j < M; j++)
            if(f[i][j] == 'W')
            {
              DFS(i,j);
              res++;
            }
       printf("%d
    ",res);
    }
    
    

    【存在的问题】1、脑残地把坐标轴坐标和矩阵的坐标对应起来了;
               2、解决了以上问题后程序还是在傲娇地RE,原来还是脑残地把“=”敲成“==”了;
                再后来程序还傲娇地WA了,于是           
               3、经大湿的指点把原输入
                  for(i = 0; i < N; i++)
                    for(j = 0; j < M; j++)
                       scanf("%c",&f[i][j]);
                 换成了
                   for(i = 0; i < N; i++)
                      scanf("%s", &f[i]);
                  蓝后就AC了~~o(≧v≦)o~~
                  原因就是%c输入把换行符给吃掉了~~蓝后造成了移位。。。。
                  ORZ。。。。
  • 相关阅读:
    [转]多个ajax请求时控制执行顺序或全部执行后的操作
    [转]微擎目录结构介绍
    [书目20180702]互联网思维的企业
    [转]Oracle密码过期, 报:ORA-01017: 用户名/口令无效; 登录被拒绝
    [转]VR原理讲解及开发入门
    [转]JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐
    [转]bootstrapValidator.js 做表单验证
    [转]Build beautiful, responsive sites with Bootstrap and ASP.NET Core
    [转]C# Bootstrap table之 分页
    [转]Bootstrap table 分页 In asp.net MVC
  • 原文地址:https://www.cnblogs.com/ZiningTang/p/3834725.html
Copyright © 2011-2022 走看看