蓝桥杯B组C++省赛 全球变暖【bfs】

题目描述:

你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:

.......
.##....
.##....
....##.
..####.
...###.
.......

其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。  

由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。  

例如上图中的海域未来会变成如下样子:

.......
.......
.......
.......
....#..
.......
.......

请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。  

【输入格式】

第一行包含一个整数N。  (1 <= N <= 1000)  
以下N行N列代表一张海域照片。  

照片保证第1行、第1列、第N行、第N列的像素都是海洋。

思路:此题采用bfs算法,找到每个岛屿的最大连通块,看是否四周都有陆地,有的话就不会被淹没,而被标记过得点就不用再以它为起点寻找连通块了。

代码如下:

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int N = 1010;                         /定义像素规模
char mp[N][N];                               /记录像素内容
int vis[N][N];                                   /标记数组,标记是否访问过该点
int flag;                                          /如果四周全为陆地就设为1
int d[4][2] = { {0,1},{0,-1},{1,0},{-1,0} };   /四个方向
void bfs(int x, int y)
{queue<pair<int, int>>q;           /用stl的队列创建存储点(x,y)q.push({ x,y });                           /把坐标推进队列vis[x][y] = 1;                               /访问过,设为1while (q.size()) {pair<int, int> t = q.front();            /取出第一个q.pop();                                         /把取出的从队列中弹出来int tx = t.first, ty = t.second;if (mp[tx][ty + 1] == '#'&&mp[tx][ty - 1] == '#'&&            /判断四周是否全为陆地mp[tx + 1][ty] == '#'&&mp[tx - 1][ty] == '#')flag = 1;for (int i = 0; i < 4; i++) {                          /向四周延伸连续块int nx = tx + d[i][0], ny = ty + d[i][1];if (vis[nx][ny] == 0 && mp[nx][ny] == '#'){vis[nx][ny] = 1;q.push({ nx,ny });}}}
}int main()
{int n;cin >> n;for (int i = 0; i < n; i++){cin >> mp[i];                     /坐标点输入}int ans = 0;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (mp[i][j] == '#'&&vis[i][j] == 0) {flag = 0;                                      /用bfs函数找出连接块bfs(i, j);if (flag == 0)                             /flag为1代表全为陆地不会被湮没,为0就代表会被淹没,并计数ans++;}}}cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SurfaceFlinger的面试题目

题目&#xff1a;简述SurfaceFlinger在Android系统中的作用是什么&#xff1f; **答案&#xff1a;**SurfaceFlinger是Android图形系统的核心组件之一&#xff0c;它负责合成各个应用程序产生的图形缓冲区内容&#xff0c;并将最终的图像呈现到屏幕上。SurfaceFlinger管理多个S…

211本科搞前端好找工作吗?AI程序员对程序员的影响有多大?

211本科去搞前端好找工作吗? 最近看到网友有问到这个问题,211本科搞前端好找工作吗?那么我根据自己的工作经历来深度聊聊网上的这个问题。 本人计算机硕士,在前端领域干了7年。我毕业后先后在上市国企,上市云计算公司,现在在一家正在IPO的公司,做新能源无人驾驶赛道,…

EDIUS11新版中国首发!新增多个AI功能比Sora更强!

2024年2月27日&#xff0c;中国苏州 - 著名专业视频剪辑工具EDIUS正式推出中国地区的最新版本EDIUS11。这次发布距上一版已有3年时间&#xff0c;EDIUS11带来了一系列创新&#xff0c;开发商Grass Valley团队引入了多项人工智能功能&#xff0c;涵盖特效、调色、降噪等多个方面…

网络安全必修课:20个核心知识点大揭秘

1、什么是SQL注入攻击 概述 攻击者在 HTTP 请求中注入恶意的 SQL 代码&#xff0c;服务器使用参数构建数据库 SQL 命令时&#xff0c;恶意SQL 被一起构造&#xff0c;并在数据库中执行。 注入方法 用户登录&#xff0c;输入用户名 lianggzone&#xff0c;密码 ‘ or ‘1’’…

XSS漏洞及其工具Beef使用

XSS(Cross Site Scripting,跨站脚本漏洞)漏洞&#xff0c;又叫 CSS 漏洞&#xff0c;是最常见的 Web 应用程序漏洞。其主要原理是当动态页面中插入的内容含有特殊字符(如<)时&#xff0c;用户浏览器会将其误认为是插入了HTML 标签&#xff0c;当这些HTML标签引入了一段 Java…

电脑文件msvcp100.dll丢失原因,如何快速修复msvcp100.dll

电脑文件msvcp100.dll丢失原因&#xff0c;最近有朋友在问这个&#xff0c;显然会问这个的人&#xff0c;一般都是遇到了msvcp100.dll丢失的问题了&#xff0c;今天我们就来详细的给大家说说msvcp100.dll这个文件吧&#xff0c;我们只有了解了msvcp100.dll这个文件&#xff0c;…

【C++ CSES】Gray Code

题目描述 A Gray code is a list of all 2^n bit strings of length n, where any two successive strings differ in exactly one bit (i.e., their Hamming distance is one). Your task is to create a Gray code for a given length n. 输入 The only input line has an…

链表详解-leetcode203.移除链表元素

链表 移除链表元素 题目&#xff1a; 题意&#xff1a;删除链表中等于给定值 val 的所有节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#xff1a; 输入&#xff1a;head [], val 1 输出&#xff1a;[…

十九、软考-系统架构设计师笔记-真题解析-2021年真题

软考-系统架构设计师-2021年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.前趋图(Precedence Graph)是一个有向无环图&#xff0c;记为&#xff1a;→(Pi,Pj)Pi must Complete Before Pj may strat), 假设系统中进程P{P1, P2,P3,P4, P5, P6, P7, P8}&#xff0c; 且进程的…

AI交互数字人应用在教育领域有何作用?

AI数字人在教育领域中&#xff0c;除了可以承担个性化教学辅导、沉浸式数字课堂、虚拟仿真实训室中&#xff0c;还可以作为AI交互数字人提供情感陪伴和心理辅导。与真人心理老师相比&#xff0c;AI交互数字人更具高度隐私保密性&#xff0c;可以为学生提供精确及个性化的咨询服…

【视频教程】苹果推送证书生成及如何对接环信推送

1、如何生成p8证书并上传到环信后台 苹果推送p8证书生成教程 2、如何生成苹果推送p12证书并上传到环信后台 苹果证书p12证书生成 3、如何在项目中对接环信推送&#xff08;iOS&#xff09; 如何在项目中对接环信推送&#xff08;iOS&#xff09; 更多教程&#xff1a; 注册环信…

LlamaParse:RAG中高效解析复杂PDF的最佳选择

一、前言 在过去的一年中&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff09;模型在信息检索和自然语言处理领域取得了显著的进展&#xff0c;但同时也面临着一系列挑战。尤其是在处理复杂PDF文档时&#xff0c;RAG模型的局限性变得尤为明显。这些文档通常…

SpringBoot ---HTML转PDF工具

之前项目用的WKHtmlToPdf&#xff0c;速度较慢&#xff0c;现在需要改成基于ITEXT java使用itext7实现html转pdf_java使用itext7实现html转pdf全代码完整示例 cainiaobulan-CSDN博客文章浏览阅读2.7k次。使用itext7html转pdf_java使用itext7实现html转pdf全代码完整示例 caini…

SpringBoot自定义starter开发:定时任务报表开发

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

C语言学习笔记day12

1. 函数的定义 函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, ...) { 函数体; return 返回值; } 函数类型: 函数运行结果的类型 函数名: 1.可以由字母、数字、下划线组成,不能以数字开头…

两个实体字段不一致,但是字段的值相同 使用注解和反射进行转换 可以避免get和set方法

一个公司两个系统&#xff0c;创建的实体含义一样&#xff0c;但是字段不一致&#xff0c;用get和set方法转换太恶心&#xff0c;而且容易空指针&#xff0c;所以使用注解和反射来写&#xff0c;特地记录一下&#xff0c;有要用的同学可以拿去用哈。 上代码&#xff1a; packa…

muduo异步日志

muduo异步日志实现 陈硕老师的muduo网络库的异步日志的实现&#xff0c;今晚有点晚了&#xff0c;我明晚再把这个异步日志抽出来&#xff0c;作为一个独立的日志库。 所在文件 AsyncLogging.cc AsyncLogging.h LogFile.h LogFile.cc CountDownLatch.h CountDownLatch.cc…

美团2023年财报:全年营收2767亿元,即时配送订单219亿笔

3月22日&#xff0c;美团(股票代码:3690.HK)发布2023年第四季度及全年业绩。公司各项业务继续取得稳健增长&#xff0c;全年营收2767亿元(人民币&#xff0c;下同)&#xff0c;同比增长26%&#xff0c;经营利润134亿元。 本年度&#xff0c;美团继续围绕“零售科技”战略&…

openlayers 入门教程(四):layers 篇

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

广告增量实时索引构建实践

本期作者 1.前言 在广告检索系统中&#xff0c;增量索引&#xff08;实时索引&#xff09;是一类常见的技术&#xff0c;用于使广告信息的变更及时生效。其中一种主要的思路即由检索系统消费广告更新数据流&#xff0c;实时更新内存索引&#xff0c;对此行业中已有很多优秀方案…