zoukankan      html  css  js  c++  java
  • POJ2386-Lake Counting

    【题目描述】

    有一个大小为M*N的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里共有多少水洼?(八连通指的是下面图中相对W的*的部分)
    ***
    *W*
    ***

    【输入】

    第一行包含两个正整数 N 和 M,表示将一个园子地面分成N*M块方格,N 行,M列,接下来的 N 行描述了园子地面状况,其中‘W’表示积水的水洼,‘.’表示没有积水。

    【输出】

    仅一个数,表示水洼的总数。

    【输入示例】

    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

    【思路】

    很简单的搜索题,像我这样的蒟蒻都能做出来。

    只要用二层循环把每个水洼第一个被搜到的部分搜索,计数器++。

    搜索把每个可能去的地方走一遍。

    把第一个搜到的部分设为平地。

    【代码】

    #include<iostream>
    using namespace std;
    int m,n,cnt=0;
    char ct[100][100];
    void s(int x,int y)
    {
        ct[x][y]='.';
        int i,j;
        for(i=-1;i<=1;i++)
        {
            for(j=-1;j<=1;j++)
            {
                if(ct[x+i][y+j]=='w'&&x+i>=0&&x+i<m&&y+j>=0&&y+j<n)
                {
                    s(x+i,y+j);
                }
            }
        }
        return;
    }
    int main()
    {
        cin>>m>>n;
        int i,j;
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                cin>>ct[i][j];
            }
        }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(ct[i][j]=='w')
                {
                    s(i,j);
                    cnt++;
                }
            }
        }
        cout<<cnt;
        return 0;
    }

     

     

     

  • 相关阅读:
    联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
    联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
    联想 Z5(L78011) 免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.254
    联想 S5 Pro(L78041)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 5.0.123
    第二阶段 冲刺八
    第二阶段 冲刺七
    第二阶段 冲刺六
    第二阶段 冲刺五
    代码大全阅读笔记03
    学习进度十二
  • 原文地址:https://www.cnblogs.com/4D24/p/9437285.html
Copyright © 2011-2022 走看看