zoukankan      html  css  js  c++  java
  • Codevs 1569 最佳绿草

    1569 最佳绿草

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description


        贝茜正计划着这一天如何美美地咀嚼春天的绿草,远望着农民约翰钟爱的并被分
    割为R (1 <= R <= 100) 行和 C (1 <= C <= 100) 列的草场。她想去数一数草场
    有多少个草丛。

        每个草丛在地图上用'#'来表示,或者两个'#'连在一起(但不是在一个对角线),
    给出草场地图,请告诉贝茜草场上一共有多少个草丛。

        例如,下面有一张草场地图 R=5, C=6:

        .#....
        ..#...
        ..#..#
        ...##.
        .#....

        这个草场一共有5个草丛。(1,2);(2,3)+(3+3);(3,6);(4,4)+(4,5);(5,2)

    输入描述 Input Description


        * 第 1 行: 2个用空格隔开的整数 R , C

        * 第 2 至 R+1 行: 草场地图信息

    输出描述 Output Description

        * 草场上草丛的总个数。

    样例输入 Sample Input

    5 6
    .#....
    ..#...
    ..#..#
    ...##.
    .#....

    样例输出 Sample Output

    5

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n,m,ans,e[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
    bool map[110][110];
    char s[110];
    void dfs(int x,int y){
        map[x][y]=0;
        for(int i=0;i<4;i++){
            int a=x+e[i][0],b=y+e[i][1];
            if(a<=n&&a>=1&&b<=m&&b>=1&&map[a][b]==1)
                dfs(a,b);
        }
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            scanf("%s",s+1);
            for(int j=1;j<=m;j++){
                if(s[j]=='.')map[i][j]=0;
                if(s[j]=='#')map[i][j]=1;
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(map[i][j]==1){
                    ans++;
                    dfs(i,j);
                }
        printf("%d",ans);
    }
  • 相关阅读:
    转 进程与线程的区别与联系
    DoEvents的应用及注意事项
    转:error LNK2001 错误
    基于UDP的简单的聊天程序
    VB提示:文件未找到:'c:\windows\sytem32\ieframe.dll\1'的解决方法
    VB PopupMenu方法
    转 vb中SetWindowsHookEx详细用法及举例
    Python批量转换txt文件为excel文件
    excel自动筛选后分别复制粘贴到新文件的解决办法
    文本编辑
  • 原文地址:https://www.cnblogs.com/thmyl/p/7219474.html
Copyright © 2011-2022 走看看