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。。。。
  • 相关阅读:
    Team饭来了团队作业3需求改进与系统设计
    2016012006崔啸寒 散列函数的应用及其安全性
    结对项目之四则运算
    《构建之法》第四章,第十七章所感
    2016012006小学四则运算练习软件项目报告
    读《构建之法》之一,二,十六章有感
    追梦软件路,愿不忘初心
    信息安全作业5 有关散列函数安全性的知识扩展
    结对作业:四则运算网页版
    Week4-作业1:阅读笔记与思考
  • 原文地址:https://www.cnblogs.com/ZiningTang/p/3834725.html
Copyright © 2011-2022 走看看