计蒜客 —— 最好的草

题目地址:

https://nanti.jisuanke.com/t/T1141

奶牛Bessie 计划好好享受柔软的春季新草。新草分布在 R行 C列的牧场里。它想计算一下牧场中的草丛数量。
在牧场地图中,每个草丛要么是单个'#',要么是有公共边的相邻两个'#'。给定牧场地图,计算有多少个草丛。
例如,考虑如下 5 行 6 列的牧场地图

 

这个牧场有 5 个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。

输入格式

第一行包含两个整数 R 和 C,中间用单个空格隔开。
接下来 R 行,每行 C 个字符,描述牧场地图。字符只有'#'或'.'两种。

输出格式

输出一个整数,表示草丛数。

代码:

#include<stdio.h>
int a[100][100];
int main(){
    int x,y;
    scanf("%d %d",&x,&y);getchar();
    for(int i = 0; i < x;i++){
        for(int j = 0;j < y;j++){
            char p = getchar();
            if(p == '.')
                a[i][j] = 0;
            else
                a[i][j] = 1;
        }
        getchar();
    }
    int sum = 0;
    int jq = 0;
    for(int i = 0; i < x;i++){
        for(int j = 0;j < y;j++){
            if(a[i][j] == 1){
                sum++;
                if(a[i][j+1] == 1 || a[i+1][j] == 1 ){
                    jq++;
                }
            }
        }
    }
    printf("%d",sum - jq);
    return 0;
}

题目难度并不大,就是思路感觉有点意思,首先将字符阵列转化成01矩阵,方便运算,之后直接硬算递归的话会比较麻烦,所以直接:

# 的总数 -  每个 # 右边和下面有相邻的 # 的个数  =  草丛数

原文地址:https://www.cnblogs.com/expedition/p/11777580.html