题目描述

西天經萬卷,東土遣高僧。
山下頑猴烈,鷹澗降飛龍。
高老收八戒,沙河白馬驚。
妖魔俱若渴,此路怎安寧。
九九何多苦,經途難寸行。
終歸劫歷盡,塵世也成空。

唐僧师徒领了如来佛祖法旨,西天取经,一路翻山越岭、跋山涉水;经历了重重困阻,种种考验,终成正果,各成一佛,共计九九八十一难,其中一难中,师徒四人来到了盘丝洞,里面充满了蜘蛛网,为了不妨碍前进,孙悟空决定把蜘蛛丝全部烧掉,但是由于盘丝洞太大了,一把火可能不够,但蜘蛛丝是相连的,只要是相邻的蜘蛛丝就可以一起烧掉

现在你获得了盘丝洞的蜘蛛网分布图,是一个n*m大小的矩阵,其中# 代表蜘蛛网代表空地,当两个蜘蛛网所在方格有一条边重合才能说明两个蜘蛛网是相邻的。相邻的蜘蛛网可以一把火烧掉,请问孙悟空一共需要几把火。

输入

第一行两个整数n,m,(1<=n,m<=1000)

接下来n行每行m列是盘丝洞的地图。

输出

一个整数表示孙悟空需要火的数量。

输入样例 Copy

3 4
##..
..##
##..

输出样例   Puts

3

题解

一道dfs算法的入门题(也可以拿bfs算法做),遍历每个点,如果这个点是蜘蛛网且还没有被烧掉,则对这个格子进行dfs,把所有与这个格子相连的蜘蛛网都标记为已经烧掉,答案+1。当对一个点dfs时,首先把自身标记为已经烧掉,然后判断它周围的四个格子,如果有格子是蜘蛛网却还未被烧掉,则再对这个点dfs。直到所有与原先蜘蛛网链接的蜘蛛网被标记为烧掉。

#include <stdio.h>
#include <stdlib.h>int n, m;
char dt[1005][1005];
int vis[1005][1005];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
void dfs(int x, int y)
{//标记自身为烧掉的状态vis[x][y] = 1;for (int i = 0; i < 4; i++) {int xx = x + dx[i], yy = y + dy[i];//如果它周围的某个方向的格子是蜘蛛网且还未被烧掉,则dfs那个格子if (dt[xx][yy] == '#' && vis[xx][yy] == 0)dfs(xx, yy);}
}
int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++)scanf("%s", dt[i] + 1);int ans = 0;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {//如果这个格子是蜘蛛网且还未被烧掉if (dt[i][j] == '#' && vis[i][j] == 0) {dfs(i, j);ans++;}}}printf("%d", ans);return 0;
}

1790: 九九八十一相关推荐

  1. 那些读博的女生,怎样通过“九九八十一关”?

    博士.女博士--常常成为新闻报道的主角.但现在,"博士光环"之外,越来越多的人开始了解博士真实的生态,包括延迟毕业时的焦虑,择业就业时的迷惘. 都说读博很苦,女博士们究竟是怎样通过 ...

  2. 从西天取经的九九八十一难来看Java设计模式:模板方法模式

    模板方法模式 示例 模板方法模式 定义 意图 主要解决问题 适用场景 优缺点 西天取经的九九八十一难 示例 当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤, 但一些步骤,不同的子类有 ...

  3. 任务启动需要经历九九八十一难,没有大师兄带路,咱们依旧可以取得真经

    这是一篇介绍PowerJob任务手动启动的流程的文章,里面也有很多java的应用,在实际项目中如何使用java,如果感兴趣,欢迎留言讨论 上回书说到了,任务已经到了该派发的阶段,而且已经派发完了,这次 ...

  4. 计算机音乐数字乐谱九九八十一,九九八十一

    <九九八十一>文本歌词 上路巩州遇虎熊 五百年前一场疯 腾霄又是孙悟空 失马鹰愁涧飞白龙 沙河阻断路难通 福陵山中收天蓬 岭上前行逆黄风 七星不照波月洞 千年白骨化阴风 鱼篮网通天一尾红 ...

  5. 七七四十九劫,九九八十一难

    蒙差揭谛皈依旨  谨记唐僧难数清  金蝉遭贬第一难  出胎几杀第二难  满月抛江第三难  寻亲报冤第四难  出城逢虎第五难  折从落坑第六难  双叉岭上第七难  两界山头第八难  陡涧换马第九难  夜 ...

  6. 排障集锦:九九八十一难之第十三难!-------------史上最全MySQL 单实例故障排查

    文章目录 一.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.soc ...

  7. 学MFC的九九八十一难

    学习MFC到底有多难,这个应该因人而异. 如果你是一个从系统底层做起的经验丰富的优秀程序员,踏实,知识渊博,编程素养高超,那么,你很有可能就是开发MFC类库的一分子. 如果你没学过几年编程,以前的写的 ...

  8. “修真院”修行九九八十一难(1)

    今天早上发了两个文章都因为"广告"和"版权"问题审核未通过,我修改一下再发最后一次 前几天在知乎上看到有人说:要学好Java不需要过多的去看教程,只要自己把这些 ...

  9. 排障集锦:九九八十一难之第十八难!-----System has not been booted with systemd as init system (PID 1). Can‘t operat

    报错现象如下 System has not been booted with systemd as init system (PID 1). Can't operate. Failed to conn ...

最新文章

  1. 《强化学习周刊》第38期:DreamingV2、Shadow-price DRL、离线强化学习
  2. linux使用交叉工具链产生的程序怎么下载到mini2440里,Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法...
  3. RHCE实验:Linux下基于xinetd的访问控制
  4. C#编写最小化时隐藏为任务栏图标的Window appllication
  5. 【转载】常用DOS命令(包括创建删除文件夹/文件)
  6. 用py2exe打包后的程序一闪而过
  7. CodeForces 651B
  8. APP技巧:电脑登录微信,要删除这5个文件!否则别人能查看聊天记录
  9. linux命令 dstat,关于linux:每天学一个-Linux-命令103dstat
  10. python基础之名称空间和作用域、函数嵌套
  11. java 监听窗口是否改变_JAVA项目监听文件是否发生变化
  12. Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释
  13. 关于ODOO中高级视图的看板案例错误
  14. Oracle 空间管理
  15. AngularJS 模板
  16. Oracle [INS-13001]环境不满足最低要求
  17. 《Inside C#》笔记(一) .NET平台
  18. 计算机在机械设制造中的应用实例,三维设计软件和技术在机械设计中的应用
  19. 电影网络首播后喜剧场上线,搅局者加速行业重塑
  20. 免费屏幕录像软件哪个好?简单几步教你快速录制无水印的高清视频!

热门文章

  1. 通过机器学习预测电网平均总负荷
  2. GICv3_LPI机制
  3. Echart 画图表
  4. KindEditor 图片粘贴上传,实现图文粘贴,图片自动上传
  5. 多智能体强化学习-G2ANet
  6. 是否能够成为真正的编程高手,主要是在于是否有毅力坚持学习和练习。今天从最简单的输出名言“贵有恒,何必三更起五更眠:最无益,只怕一日曝十日寒。”开始,主要是想让读者激励自己,坚持学习C语言。
  7. 打开桌面计算机投屏到扩展屏,苹果电脑投屏到显示器的三种常见方式
  8. 都是was缓存惹的祸
  9. android自定义百度地图导航,Android百度定位导航之基于百度地图移动获取位置和自动定位...
  10. 【Python爬虫】BeautifulSoup和实战