1455: 难民救助

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 36   Solved: 0
[ Submit][ Status][ Web Board]

Description

某国家由于发生了战争,A地区遭到了严重的破坏,为了救助A地区的难民,该国家将A地区划分成了n*m个矩形的区域,这些矩形可能上、下、左、右连通,每一个区域内可能有人,也可能没有人。在一个区域内设置一个难民营后,可以将和该区域相连的其它区域中的难民全部收容,请帮忙计算为了安置所有的难民,最少要设置多少座难民营。

Input

先输入两个整数n和m(1<=n,m<=50)。接着有n行,每行有m个字符。#表示该区域有难民,!则表示该区域没有难民。

Output

对于每组测试数据,输出最少需要架设几座难民营。

Sample Input

2  2
#  !
!#

Sample Output

2

这点道题其实就是简单的dfs搜索题,可能会有所不注意的就是输入的数据之间有空格,

还有一点,输入的字符一定不要是中文标点字符,因为中文标点字符需要占用两个字节,而普通的字符只需要一个字节

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int max1=100+5;
char blk[max1][max1];
int m,n,bnum[max1][max1];
void dfs(int t,int y,int u)//定义dfs函数
{if(t<0||t>=n||y<0||y>=m)return;if(bnum[t][y]>0||blk[t][y]!='#')return;bnum[t][y]=u;//若该位置被访问则,将该位置值修改为不为零 for(int i1=-1;i1<=1;i1++){for(int j1=-1;j1<=1;j1++){if(abs(i1+j1)==0||abs(i1+j1)==2)continue;//注意本题给的条件是上下左右相邻才算相连,对角并不算 dfs(t+i1,y+j1,u);}}
}
int main()
{scanf("%d%d",&n,&m);getchar();for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%c",&blk[i][j]);if(blk[i][j]==' ')//因为输入时可能输入空格,所以应该将其剔除出字符串 {blk[i][j]='\0';j=j-1;}}getchar();}memset(bnum,0,sizeof(bnum));int num=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(bnum[i][j]==0&&blk[i][j]=='#'){dfs(i,j,++num);//dfs搜索开始条件,每一个新的搜索开始运行时,上一个搜索已经运行结束,即上一个对应点所能联通的点都已经进行标记 }}}printf("%d\n",num);return 0;
} 

难民救助 八连块问题相关推荐

  1. 探寻虹膜识别背后的身份密码 | 硬创公开课

    今年8月,雷锋网(搜索"雷锋网(搜索"雷锋网"公众号关注)"公众号关注)将在深圳举办一场盛况空前,且有全球影响力的人工智能与机器人创新大会.届时雷锋网(公众号: ...

  2. UVA 572 BFS 图论入门

    题干略. 注意八连块的遍历方式,秒得很: #include<iostream> #include<cstdio> #include<cstring> #includ ...

  3. 灌水导论——灌水法初步

    灌水法: Flood Fill 直译为大水漫灌,会造成土地盐碱化...... 但是,在OI中,灌水不失为水搜索的一种好方法呢~~ 灌水的思想: 灌水的思想其实就是从一个点(水源)出发,将符合条件可以到 ...

  4. 《算法分析与设计》练习14

    目录 A 菱形图案 B 牛妹的蛋糕 C 尼科彻斯定理 D ABC+DEF=GHI E  油田问题 F 马的遍历问题 A 菱形图案 题目描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习 ...

  5. 算法 64式 7、搜索算法整理_第1部分_1到15题

    1 算法思想 算法分类 搜索算法主要分为: 暴力搜索+剪枝,枚举,广度优先搜索,深度优先搜索,二分查找,哈希查找, A*算法,两边向中间逼近,从中间向两边扩散等 1.1枚举 枚举: 最直白的搜索方式, ...

  6. DFS(深度优先遍历)

    DFS的意思为深度优先遍历. 一.DFS的简介: 深度优先遍历(DFS)也叫深度优先搜索.它的定义是:不断地沿着顶点的深度方向遍历.顶点的深度方向是指它的邻接点方向. 二.DFS的实现步骤: 1.从顶 ...

  7. 【java】黑白图像

    输入一个n*n的黑白图像,统计其中黑色八连块的个数,0代表白,1代表黑. 样例输入: 6 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 ...

  8. 图的遍历——深度优先搜索和广度(宽度)优先搜索(含例题)

    专栏导读及目录https://blog.csdn.net/createprogram/article/details/86741044 深度优先搜索 DFS基本思想 基本步骤: 1.从图中某个顶点v0 ...

  9. 海航集团怎么样温暖世界的呢?

    虽然这个世界上有不同的种族,不同的语言,不同的生活习性,但有些东西是跨越国界的,是部分彼此的,比如爱,有句话说"爱是我们共同的语言".作为一家以履行责任为重的跨国企业集团,海航集团 ...

最新文章

  1. hdu2639,第K优决策
  2. 北京/苏州内推 | 微软亚洲互联网工程院招聘算法工程师/应用科学家
  3. 给Dev-Cpp开挂
  4. php登录后自动退出登录,PHP利用Cookie设置用户30分钟未操作自动退出功能
  5. 51nod1432 独木舟
  6. python的tab自动补全
  7. NYOJ 1272:表达式求值(2016河南省ACM-A)
  8. C++使用opencv判断一个点是否在多边形之内
  9. 清明祭娭毑_原水_新浪博客
  10. NXP TJA1040, TJA1042, TJA1050 TJA1051, TJA1057, TJA1044, TJA1055区别
  11. nodejs+vue 智慧餐厅点餐餐桌预订系统
  12. R语言 RevoScaleR的大规模数据集决策树模型应用案例
  13. 双网卡同网段静态路由_WINDOWS系统下双网卡设置路由 本文主要涉及到静态路由...
  14. 四、服务注册与发现Consul
  15. 走出舒适区的两种方法
  16. LaTex的安装(Windows)2022船新版本
  17. 【博途】分析德国工程师写的STL中的Any指针 L 16#1002
  18. Linux下xl710网卡驱动,CentOS 6.x 系统安装+网卡驱动安装(Realtek PCIe GBE Family Controller for Linux)...
  19. vue3状态管理vuex
  20. java对接移动物联网onenet平台实现接收设备上报数据命令下发

热门文章

  1. java 构造器注入_Spring学习笔记1—依赖注入(构造器注入、set注入和注解注入)...
  2. 把竖屏视频转为横屏,这样操作
  3. opc协议 服务器,使用OPC UA协议在python中进行服务器端客户端编程
  4. uni-app支付功能
  5. 我本男儿行四方 何惧风雨历沧桑
  6. FlycoTabLayout第三方控件设置选中放大
  7. linux常用压缩解压命令:tar,tgz,gzip,zip,rar
  8. 想进互联网行业该如何选择岗位?
  9. QML学习【一】QML语言基础
  10. [洛谷 OJ]P1101 单词方阵