Acwing---1233. 全球变暖
全球变暖
- 1.题目
- 2.基本思想
- 3.代码实现
1.题目
你有一张某海域 N×N像素的照片,”.”表示海洋、”#”表示陆地,如下所示:
.......
.##....
.##....
....##.
..####.
...###.
.......
其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 2座岛屿。
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。
具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。
例如上图中的海域未来会变成如下样子:
.......
.......
.......
.......
....#..
.......
.......
请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
输入格式
第一行包含一个整数N。
以下 N 行 N列,包含一个由字符”#”和”.”构成的 N×N 字符矩阵,代表一张海域照片,”#”表示陆地,”.”表示海洋。
照片保证第 1行、第 1 列、第 N行、第 N 列的像素都是海洋。
输出格式
一个整数表示答案。
数据范围
1 ≤ N ≤ 1000 1≤N≤1000 1≤N≤1000
输入样例1:
7
.......
.##....
.##....
....##.
..####.
...###.
.......
输出样例1:
1
输入样例2:
9
.........
.##.##...
.#####...
.##.##...
.........
.##.#....
.#.###...
.#..#....
.........
输出样例2:
1
2.基本思想
BFS
- 遍历所有未遍历过的陆地,通过
bfs
计算出当前位置连通陆地的数量total
,以及被淹没陆地的数量bound
,若total == bound
表示完整淹没的一个岛屿
3.代码实现
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;public class Main { // flood fillstatic Scanner sc = new Scanner(System.in);static int N = 1010;static char g[][] = new char[N][N];static int[] dx = {0, 0, 1, -1}, dy = {1, -1, 0, 0};//四个方向的偏移量static boolean st[][] = new boolean[N][N];static int n = 0;static class PII {//保存坐标int x, y;public PII(int x, int y) {this.x = x;this.y = y;}}public static void main(String[] args) {n = sc.nextInt();for (int i = 0; i < n; i++) {//处理输入char[] c = sc.next().toCharArray();for (int j = 0; j < n; j++) {g[i][j] = c[j];}}int cnt = 0;//统计结果for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (!st[i][j] && g[i][j] == '#') {//当前位置没访问过 且 以该陆地进行 宽搜if (bfs(i, j)) cnt++;}}}System.out.println(cnt);}private static boolean bfs(int x, int y) {int total = 0, bound = 0;//当前位置连通陆地的数量 被淹没陆地的数量Queue<PII> queue = new LinkedList<>(); //初始化 队列queue.offer(new PII(x, y));//加入队列st[x][y] = true;//当前点 标记访问过while (!queue.isEmpty()) {//队列非空PII t = queue.poll();//取出头节点 并删除total++;boolean is_bound = false;//判断 岛屿 是否被淹没for (int i = 0; i < 4; i++) {int a = t.x + dx[i], b = t.y + dy[i];//拓展四个方向的点if (a < 0 && a >= n && b < 0 && b >= n) continue;//超出边界if (st[a][b]) continue;//已访问过if (g[a][b] == '.') {is_bound = true;continue;}queue.add(new PII(a, b));st[a][b] = true;}if (is_bound) bound++;//拓展四个方向后 发现有与 海相连}return total == bound;}
}
Acwing---1233. 全球变暖相关推荐
- AcWing 1233. 全球变暖【FloodFill】【BFS】【DFS】
AcWing 1233. 全球变暖 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 解法一(BFS): 解法二(DFS): 四.其它题解 一.题目链接 AcWing 1233 ...
- 蓝桥杯C++ AB组辅导课 第六讲 双指针、BFS与图论 Acwing
例题 AcWing 1238. 日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行. 其中每一行的格式是: ts id 表示在 ts 时刻编号 id ...
- 【蓝桥杯算法练习题】双指针、BFS与图论
一.AcWing 1238. 日志统计 [题目描述] 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有NNN行. 其中每一行的格式是: ts id 表示在tstst ...
- 第六讲 双指针、BFS与图论、单链表
双指针 所有类似这样的算法都是双指针算法,时间复杂度为O(n) AcWing 1238. 日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行. 其中 ...
- 蓝桥杯备赛(五) 双指针,BFS与图论
蓝桥杯备赛(五) 双指针,BFS与图论 一.双指针 1.Acwing 1238. 日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行. 其中每一行的 ...
- 第六章:双指针,BFS,和图论 【完结】
目录 1238. 日志统计 [双指针] 1101. 献给阿尔吉侬的花束 [BFS] 1113. 红与黑 [BFS] 1224. 交换瓶子 [思维 / 环] 1240. 完全二叉树的权值 [规律] 10 ...
- [AcWing算法刷题]之DFS+BFS迷宫模板(简单)
题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...
- AcWing 734. 能量石 (01背包)+(贪心 - 领项交换)
AcWing 734. 能量石 #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)
https://www.acwing.com/problem/content/354/ 在没有附加边的情况下,我们发现这是一颗树,那么再添加条附加边(x,y)后,会造成(x,y)之间产生一个环 如果我 ...
- HDU 1233 还是畅通工程。
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1233 x 解题思路: 简单的最小生成树 实现代码: #include <iostream> ...
最新文章
- WINDOWS SERVER 2003从入门到精通之DHCP中继代理
- c mysql 编码_mysql编码转换 mysql编码设置详解
- mysql 学习笔记15 子查询
- 【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环
- java stream 多个filter_如何在Java Stream上应用多个过滤器?
- 第3篇:Flowable-IDM详述
- mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...
- NPOI Excel 单元格背景颜色对照表
- Python OpenCV学习笔记之:使用MOG2视频背景消除
- Atitit mysql数据库自定义异常在java里面的捕获与处理推荐标准与规范
- MySQL驱动包下载
- vlfeat matlab怎么用,VLFeat在matlab中的使用
- 原生HTML table样式设置大全
- 「Injective衍生品市场创意大赛」角逐“最强王者”,就等你来
- 查看360极速浏览器保存的密码
- 计算机软件专利安全期刊论文,安全与环境学报
- 2.郝斌C语言课程大纲
- 备受欢迎的随心金融P2P
- 计算机网络中 数据交换的方式有,计算机网络中的通信数据交换技术探讨
- UVM field automation机制
热门文章
- 甲基四嗪-活化的pegyreagent,它与含tco的化合物发生反应Methyltetrazine-mPEG, 30 kDa
- 中职计算机应用基础pdf,职高三计算机应用基础(win7+office2010)word.pdf
- MATLAB简易网络爬虫(未加入DFS)
- LCIA(低成本智能自动化)
- 嘉泰智能受邀出席2020广东省制造业高质量发展论坛暨制造强省建设院士专家咨询会
- 计算机二级题库python题库有几套_2019计算机二级备考资料+题库(含Python)
- 【VS开发】Windows上的音频采集技术
- ceph的架构和概念学习
- 怎么批量下载pexels网站图片?如何解决该网站的反爬?有人说用pexels 的api接口就可以解决。
- 大咖访谈 | 做开源,最核心的就是要随缘 —— Apache SkyWalking 创始人吴晟