Codevs 1569 最佳绿草
2024-10-20 21:14:49
题目描述 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[][]={{,},{,-},{-,},{,}};
bool map[][];
char s[];
void dfs(int x,int y){
map[x][y]=;
for(int i=;i<;i++){
int a=x+e[i][],b=y+e[i][];
if(a<=n&&a>=&&b<=m&&b>=&&map[a][b]==)
dfs(a,b);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%s",s+);
for(int j=;j<=m;j++){
if(s[j]=='.')map[i][j]=;
if(s[j]=='#')map[i][j]=;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(map[i][j]==){
ans++;
dfs(i,j);
}
printf("%d",ans);
}
最新文章
- Basic Tutorials of Redis(9) -First Edition RedisHelper
- 在使用dot。js中的值中有空格出现后,进行去除
- 倍数提高工作效率的 Android Studio 奇技
- 地图编辑器V1
- json日期格式问题的办法
- hdu1272 小希的迷宫
- 五、案例-指令参考-freemarker指令、表达式
- Magento 中的多个类别的筛选产品集合
- 【HDOJ】1421 搬寝室
- angular 数据加载动画 longding
- Flash AIR 保存与读取
- Lazarus中TreeView导出XML以及XML导入TreeView
- tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理
- Linux内核分析——程序破解
- Linux查看机器和硬盘的SN
- bozoj3131: [Sdoi2013]淘金 数位dp
- springboot配置redis
- solr学习笔记
- jQuery事件之传递参数
- C/C++——赋值理解(匿名临时对象)