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

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #define N 105
     5 using namespace std;
     6 int n,m,a[N][N],ans,dx[]={0,0,1,-1},dy[]={1,-1,0,0};
     7 void dfs(int x,int y){
     8     a[x][y]=0;
     9     for(int i=0;i<4;i++){
    10         int xx=x+dx[i],yy=y+dy[i];
    11         if(a[xx][yy]==1) dfs(xx,yy);
    12     }
    13 }
    14 int main()
    15 {
    16     char c;
    17     memset(a,0,sizeof(a));
    18     scanf("%d%d",&n,&m);
    19     for(int i=1;i<=n;i++){
    20         for(int j=1;j<=m;j++){
    21             cin>>c;
    22             if(c=='#') a[i][j]=1;
    23             if(c=='.') a[i][j]=0;
    24         }
    25     }
    26     for(int i=1;i<=n;i++){
    27         for(int j=1;j<=m;j++){
    28             if(a[i][j]==1) dfs(i,j),ans++;
    29         }
    30     }
    31     printf("%d",ans);
    32     return 0;
    33 }
  • 相关阅读:
    spring声明式事务管理详情解析
    Nginx nginx.conf配置文件详细说明
    etcd
    rsyslog使用简介
    LINUX常见命令
    kafka简介&使用
    kafka安装
    Zookeeper简介&应用场景
    Zookeeper安装
    安装JDK
  • 原文地址:https://www.cnblogs.com/suishiguang/p/6227468.html
Copyright © 2011-2022 走看看