题目地址:
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矩阵,方便运算,之后直接硬算递归的话会比较麻烦,所以直接:
# 的总数 - 每个 # 右边和下面有相邻的 # 的个数 = 草丛数