zoukankan      html  css  js  c++  java
  • HDU2952:Counting Sheep(DFS)

    Counting Sheep

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
    Total Submission(s) : 35   Accepted Submission(s) : 24

    Font: Times New Roman | Verdana | Georgia

    Font Size: ← →

    Problem Description

    A while ago I had trouble sleeping. I used to lie awake, staring at the ceiling, for hours and hours. Then one day my grandmother suggested I tried counting sheep after I'd gone to bed. As always when my grandmother suggests things, I decided to try it out. The only problem was, there were no sheep around to be counted when I went to bed.


    Creative as I am, that wasn't going to stop me. I sat down and wrote a computer program that made a grid of characters, where # represents a sheep, while . is grass (or whatever you like, just not sheep). To make the counting a little more interesting, I also decided I wanted to count flocks of sheep instead of single sheep. Two sheep are in the same flock if they share a common side (up, down, right or left). Also, if sheep A is in the same flock as sheep B, and sheep B is in the same flock as sheep C, then sheeps A and C are in the same flock.


    Now, I've got a new problem. Though counting these sheep actually helps me fall asleep, I find that it is extremely boring. To solve this, I've decided I need another computer program that does the counting for me. Then I'll be able to just start both these programs before I go to bed, and I'll sleep tight until the morning without any disturbances. I need you to write this program for me.

    Input

    The first line of input contains a single number T, the number of test cases to follow.

    Each test case begins with a line containing two numbers, H and W, the height and width of the sheep grid. Then follows H lines, each containing W characters (either # or .), describing that part of the grid.

    Output

    For each test case, output a line containing a single number, the amount of sheep flock son that grid according to the rules stated in the problem description.

    Notes and Constraints
    0 < T <= 100
    0 < H,W <= 100

    Sample Input

    2
    4 4
    #.#.
    .#.#
    #.##
    .#.#
    3 5
    ###.#
    ..#..
    #.###

    Sample Output

    6
    3
    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<deque>
    using namespace std;
    
    struct node
    {
        int x,y;
    };
    int dr[8][2]={{1,0},{0,1},{-1,0},{0,-1}};
    deque<node> s;
    int i,j,n,m,num,t;
    char ch[102][102];
    
    void bfs(int x,int y)
    {
        node t;
        t.x=x;
        t.y=y;
        ch[x][y]='*';
        s.push_back(t);
        while(!s.empty())
        {
            node p=s.front();
            for(int i=0;i<4;i++)
            {
                int xx=p.x+dr[i][0];
                int yy=p.y+dr[i][1];
                if (xx>=0 && xx<n && yy>=0 && yy<m && ch[xx][yy]=='#')
                {
                    t.x=xx;
                    t.y=yy;
                    ch[xx][yy]='.';
                    s.push_back(t);
                }
            }
            s.pop_front();
        }
        return;
    }
    int main()
    {
        scanf("%d",&t);
        for(;t>0;t--)
        {
           scanf("%d%d",&n,&m);
            num=0;
            for(i=0;i<n;i++)
                scanf("%s",&ch[i]);
            for(i=0;i<n;i++)
                for(j=0;j<m;j++)
                 if (ch[i][j]=='#')
                  {
                      bfs(i,j);
                      num++;
                  }
          printf("%d\n",num);
        }
        return 0;
    }
  • 相关阅读:
    SQL事务
    C# 怎样读写EXCEL文件
    如何#读写EXCEL 文件 (http://space.cnblogs.com/question/7131/)
    C# 怎样读写EXCEL文件 (http://space.cnblogs.com/question/7131/)
    控制DataGirdView中單元格
    C#中ToString格式大全
    转贴:用SqlCommandBuilder 实现批量更新
    错题记录1
    Java—关于String的分析
    Java模拟双色球彩票
  • 原文地址:https://www.cnblogs.com/stepping/p/5669090.html
Copyright © 2011-2022 走看看