当前位置: 首页 > news >正文

蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

蓝桥杯上岸每日N题第八期(全球变暖)!!!

同步收录 👇

蓝桥杯上岸必背!!!(第五期BFS)

大家好 我是寸铁💪

冲刺蓝桥杯省一模板大全来啦 🔥

蓝桥杯4月8号就要开始了 🙏

距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️

还没背熟模板的伙伴们背起来 💪 💪 💪

真题千千万万遍,蓝桥省一自然现! ✌️

日更3000里,蓝桥眷顾你 🌟

暴力出奇迹,打表过样例 👊

祝大家4月8号蓝桥杯上岸 ☀️

不清楚蓝桥杯考什么的点点下方👇

考点秘籍

想背纯享模版的伙伴们点点下方👇

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

蓝桥杯省一你一定不能错过的模板大全(第三期)

蓝桥杯省一你一定不能错过的模板大全(第四期)!!!

想背注释模版的伙伴们点点下方👇

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题 第六期(求阶乘)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方 👇

填空题

竞赛干货

算法竞赛字符串常用操作大全

蓝桥杯上岸必刷!!!(模拟/枚举专题)

蓝桥杯上岸必背!!! (第三期 DP)

蓝桥杯上岸必背!!!(第四期DFS)

蓝桥杯上岸必背!!!(第五期BFS)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第七期 最短路算法)

蓝桥杯上岸必背!!!(第八期 简单数论)


前言

喜欢的小伙伴可以关注我,关注寸铁,我们一起上岸4.8蓝桥杯!!!

全球变暖

考点:BFS+Queue

分析

其中”上下左右”四个方向上#连在一起的一片陆地组成一座岛屿。
具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋.),它就会被淹没。

题目模拟(岛屿)

注:图中有3个岛屿,上下连续区域。

在这里插入图片描述

题目模拟(海洋淹没)

在这里插入图片描述

注:题中有一个岛屿全被淹没

题目解读

观察一下:岛屿中陆地的数量和海洋的数量是统一的。
如果这个陆地上下左右方向只要有一个方向有.的话,就说明该陆地会被淹没
也就是只要我们在陆地上下左右方向中找到了一个.,就说明这个陆地被淹没
换言之,如果说岛屿中陆地被淹没了,就存在至少一个方向的海洋.
我们只需要统计岛屿的个数和海洋的个数即可。
如果海洋个数和岛屿中陆地的个数相等,则说明该岛屿已被淹没。否则未被淹没

所以,关键在于维护海洋和岛屿中陆地的个数。

这题用BFS来处理
首先没有点与点之间的关系,所以我们不用邻接表来存储边和点的关系。
而是用队列的方式去维护BFS一层一层往外搜,一层一层往外扩。

那在bfs中我们还需要维护其他变量用于解决此题。
首先,我们需要去统计连通块(岛屿)中陆地的个数 res
这里在队头元素出队的时候,统计一下即可。
设定isbound来标记是边界的.
然后,弹出队头,进行上下左右的坐标移动,统计其上下左右方向是否有.
有的话,我们就将该位置的坐标标记上
false

最后统计一下每个岛屿的isbound个数有多少个。

如果说resisbound相等,则说明该岛屿全部淹没

代码

import java.util.*;
public class Main{static int N=1010;static char g[][]=new char[N][N];static boolean st[][]=new boolean [N][N];static int dx[]= {1,0,-1,0};static int dy[]= {0,-1,0,1};static int n;static int cnt;public static void main(String []args) {Scanner in=new Scanner(System.in);n=in.nextInt();for(int i=0;i<n;i++) {char a[]=in.next().toCharArray();for(int j=0;j<n;j++) {g[i][j]=a[j];} 		}for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {if(g[i][j]=='#'&&!st[i][j]) {if(bfs(i,j))cnt++;		}}}System.out.println(cnt);	}public static boolean bfs(int x,int y) {Queue<pair>q=new LinkedList<>();q.add(new pair(x,y));int res=0;int bound=0;st[x][y]=true;while(!q.isEmpty()) {pair t=q.poll();res++;boolean isbound=false;for(int i=0;i<4;i++) {int a=t.x+dx[i];int b=t.y+dy[i];if(a<0||a>=n||b<0||b>=n)continue;if(st[a][b])continue;if(g[a][b]=='.') {isbound=true;continue;}q.add(new pair(a, b));st[a][b]=true;}if(isbound)bound++;	}return res==bound;}
}
class pair{int x;int y;public pair(int x,int y) {this.x=x;this.y=y;}
}

✨ ✨ ✨
看到这里,不妨点个关注 💖

http://www.lryc.cn/news/112103.html

相关文章:

  • CSS基础介绍笔记1
  • https请求异常引发(Received fatal alert: unrecognized_name):如何快速解决项目中问题?
  • 小程序 view下拉滑动导致scrollview滑动事件失效
  • 《ROS2》教程
  • 抖音seo源码开发源代码搭建分享
  • MATLAB——使用建立好的神经网络进行分类程序
  • Spring5.2.x 源码使用Gradle成功构建
  • iOS永久签名工具 - 轻松签使用教程
  • 如何申请中国境内提供金融信息服务业务许可
  • Java多线程(六)
  • ceil(),floor(),round()函数C++详解
  • 自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)
  • 企业服务器数据库中了devos勒索病毒怎么办如何解决预防勒索病毒攻击
  • three.js学习
  • Vue3 第一节 Vue3简介以及创建Vue3工程
  • 用docker 部署springboot项目
  • maven 模块打包时包含依赖和打包可执行的jar
  • perl脚本调用openssh不能正确执行(ctl_dir /root/.libnet-openssh-perl/ is not secure)的原因排查
  • Apache+Tomcat 整合
  • CSS中page-break-after属性
  • mvn build jar依赖和源码本身分开。减轻编译后的jar大小
  • Java是值传递还是引用传递?
  • 16 - 初探Linux进程调度
  • Huggingface使用
  • Android 刷新与显示
  • 三行命令在CentOS 8上安装FFmpeg
  • 【前端】html
  • 【RealTek sdk-3.4.14b】Realtek WiFi开发调试指令总结
  • 基于Vue 的文本类弹框代码Demo
  • 2023.08.01 驱动开发day8