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[][]={{,},{,-},{-,},{,}};
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);
}

最新文章

  1. Basic Tutorials of Redis(9) -First Edition RedisHelper
  2. 在使用dot。js中的值中有空格出现后,进行去除
  3. 倍数提高工作效率的 Android Studio 奇技
  4. 地图编辑器V1
  5. json日期格式问题的办法
  6. hdu1272 小希的迷宫
  7. 五、案例-指令参考-freemarker指令、表达式
  8. Magento 中的多个类别的筛选产品集合
  9. 【HDOJ】1421 搬寝室
  10. angular 数据加载动画 longding
  11. Flash AIR 保存与读取
  12. Lazarus中TreeView导出XML以及XML导入TreeView
  13. tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理
  14. Linux内核分析——程序破解
  15. Linux查看机器和硬盘的SN
  16. bozoj3131: [Sdoi2013]淘金 数位dp
  17. springboot配置redis
  18. solr学习笔记
  19. jQuery事件之传递参数
  20. C/C++——赋值理解(匿名临时对象)

热门文章

  1. jquery根据(遍历)html()的内容/根据子元素的内容(元素文本)来选择(查询),在子元素前加入元素
  2. java代码中的三元表达式
  3. 给js设定一个统一的入口
  4. 【C++基础学习】Vector
  5. 【Effective C++】设计与声明
  6. Linux-正则表达式学习(精)
  7. application 长用到的API
  8. im资源
  9. 前端调用后端接口返回200(成功状态码),后端有返回,但是控制台Network Response为空,没展示任何信息
  10. MTK UART串口调试