下面的这个题目是连通块问题中比较经典的了

顾名思义,每一个连通块就是一个油藏,这个题我首先想到的是并查集,但是写了写发现有问题,后来就写了迷宫问题常用的BFS算法,这个题告诉我的是,用算法不能太死,我感觉我的bfs只停留在会走迷宫这一步,其实还是用的不好

这个题目的思路是:遍历每一个点,然后如果他是油区,就要用bfs搜索他附近的油区,并把他们都变成*,以防以后重复遍历,在这里bfs起到的作用是找附近的油区,而不是迷宫那样遍历地图,在这里遍历地图用的双层循环

另外,next是C++的关键字,刚才用了他作为数组名字,所以造成好几次引用错误,另外我们寻找一个点的八个方向,通常是int next = {{1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,1},{-1,0},{-1,-1}}; 1,-1开头的三个,0开头的两个

ztw 同志负责探测地下石油储藏。 ztw现在在一块矩形区域探测石油。他通过专业设备,来分析每个小块中是否蕴藏石油。如果这些蕴藏石油的小方格相邻(横向相邻,纵向相邻,还有对角相邻),那么它们被认为是同一油藏的一部分。在这块矩形区域,可能有很多油藏。你的任务是确定有多少不同的油藏。

输入

输入可能有多个矩形区域(即可能有多组测试)。每个矩形区域的起始行包含m和n,表示行和列的数量,1<=n,m<=100,如果m =0表示输入的结束,接下来是n行,每行m个字符。每个字符对应一个小方格,并且要么是'*',代表没有油,要么是'@',表示有油。(注意多组数据,必要的数组要及时清空~)

输出

对于每一个矩形区域,输出油藏的数量。两个小方格是相邻的,当且仅当他们水平或者垂直或者对角线相邻(即8个方向)。

示例输入

1 1

*

3 5

*@*@*

**@**

*@*@*

1 8

@@****@*

5 5

****@

*@@*@

*@**@

@@@*@

@@**@

0 0

示例输出

0

1

2

2

BFS解决连同块问题相关推荐

  1. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

  2. 【Codeforces Round #548(Div. 2)】Edgy Trees(数学+bfs求连通块)

    题目链接 C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. onenote解决代码块高亮的解决方法

    1.版本下载 官网: 添加链接描述 Onenote2010: OneNote 程序代码高亮插件 - Daddy_Long_Legs -博客频道 - CSDN.NET 添加链接描述 下载地址: 添加链接 ...

  4. 算法题(四十):BFS解决网易2017年笔试题——地牢逃脱

    题目描述 给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一 ...

  5. BFS解决简单迷宫问题

    #include<bits/stdc++.h> using namespace std;const int N=110; int g[N][N];//存地图 int n,m; typede ...

  6. 游历校园 [COGS 614] [欧拉图]

    Description 刷完牙洗完脸,黄黄同学就要上课去了.可是黄黄同学每次去上课时总喜欢把校园里面的每条路都走一遍,当然,黄黄同学想每条路也只走一遍.我们一般人很可能对一些地图是办不到每条路走一遍且 ...

  7. [C] [编程题]连通块(DFS解决)

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...

  8. LeetCode547. Friends Circles 利用union find | bfs | dfs三种方法解决

    问题来源 此题来源于LeetCode547. Friend Circles,主要运用了并查集(union find).广度优先遍历(bfs)和深度优先遍历(bfs)三种方法解决. 问题简述 给定一个N ...

  9. 中矿新生赛 H 璐神看岛屿【BFS/DFS求联通块/连通块区域在边界则此连通块无效】...

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 璐神现在有张n*m大小的地图,地图上标明了陆地 ...

  10. Lect2 BFS总结

    能够用 BFS 解决的问题,一定不要用 DFS 去做 因为用 Recursion 实现的 DFS 可能造成 StackOverflow (NonRecursion 的 DFS 一来你不会写,二来面试官 ...

最新文章

  1. c语言 文件截断,c – 是否有一种正统的方法来避免编译器警告C4309 – “二进制文件输出的”常数值的截断“?...
  2. 2021-01-26 Python自动化办公-处理word文档
  3. 在Linux系统下生产者消费者,生产者-消费者问题实现 (linux下C语言)
  4. linux deepin ubuntu apt安装openjdk-8-jdk
  5. 多线程 调用多线程的方法 Runtime与ProcessBuilder
  6. 【模板】吉老师线段树
  7. 离线计算成本节省的神兵利器
  8. AngularJS学习(二)
  9. SSM框架笔记06:初探Spring——采用XML配置方式
  10. mooc c语言第三周作业,2017moocC语言第七周答案
  11. 上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?
  12. MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?...
  13. css3实现水平垂直居中
  14. SOFT Workplace 软件使用说明书
  15. win10计算器rsh_如何打开win10计算器 教你打开win10计算器的方法
  16. vue静态资源打包中的坑与解决方案
  17. Java编程笔记17:I/O
  18. 修改linux系统的时间EDT为CST
  19. 逆转ISP,港科大陈启峰团队提出了可逆ISP
  20. 重生之我是赏金猎人(九)-从本无法触发的xss到梦幻联动挖掘多个致命接口下的XSS触发点

热门文章

  1. iOS ASI--POST请求
  2. Js 日期选择,可以的一个页面中重复使用本JS日历,兼容IE及火狐等主流浏览器,而且界面简洁、美观,操作体验也不错。...
  3. WebBrowser填充表单值的问题.
  4. java的基本数据类型有什么特点_【Java】常用数据类型及其特点(万物都是变量)...
  5. 拓端tecdat|R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化
  6. 拓端tecdat|二手闲置物品交易数据快照
  7. calendar获取本周一的日期_Java日期时间API系列1-----Jdk7及以前的日期时间类
  8. 基于umi写一个用户管理CRUD
  9. Could not find a version that satisfies the requirement PyQt5
  10. Caffe学习1-图像识别与数据可视化