14届蓝桥杯 C/C++ B组 T6 岛屿个数 (BFS,FloodFill,填色)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
首先拿到这道题不要想着去直接判断环里面的岛屿,这样太困难了,我们可以使用之前做过的题的经验,在输入加入一圈海水,然后从(0,0)点开始BFS,这里进行八向搜索,搜到的0全部都染色成2,假如2能够蔓延到岛屿的周围,就说明这个岛屿不在环里面,因为从外面无法蔓延到环里面。

在经历了染色过程之后我们就可以直接BFS搜索岛屿了,搜到任何被2围绕的岛屿就让答案加1。

代码:

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N = 55;
const int dx[4] = { 1,0,-1,0 };
const int dy[4] = { 0,1,0,-1 };
const int ddx[8] = { 1,1,0,0,-1,-1,1,-1 };
const int ddy[8] = { 1,-1,1,-1,1,-1,0,0 };char g[N][N];
int n, m;
bool vis[N][N];
int res = 0;void bfs(int ix, int iy, int st) {bool flag = 0;  //标记周围是否有2queue<pair<int, int>>q;q.push({ ix,iy });vis[ix][iy] = 1;while (q.size()) {auto t = q.front(); q.pop();if (st == 1) {  //这里是搜索岛屿的过程for (int i = 0; i < 4; i++) {int x = t.first + dx[i], y = t.second + dy[i];if (x >= 1 && x <= n && y >= 1 && y <= m && !vis[x][y]) {if (g[x][y] == '2')flag = 1;if (g[x][y] == '1') {q.push({ x,y });vis[x][y] = 1;}}}}else {          //这里是搜索外围海洋的过程for (int i = 0; i < 8; i++) {int x = t.first + ddx[i], y = t.second + ddy[i];if (x >= 0 && x <= n + 1 && y >= 0 && y <= m + 1 && !vis[x][y] && g[x][y] == '0') {q.push({ x,y });g[x][y] = '2';vis[x][y] = 1;}}}}if (flag)res++; //如果不在环里面,答案加1
}int main() {int t; cin >> t;while (t--) {memset(vis, 0, sizeof vis); //初始化memset(g, '0', sizeof g);cin >> n >> m;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> g[i][j];}}bfs(0, 0, 2);memset(vis, 0, sizeof vis); //搜完一遍海洋之后也要初始化res = 0;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (g[i][j] == '1' && !vis[i][j]) {bfs(i, j, 1);}}}cout << res << endl;}return 0;
}

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

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

相关文章

Leetcode刷题之移除元素(C语言版)

Leetcode刷题之移除元素&#xff08;C语言版&#xff09; 一、题目描述二、题目解析 一、题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅…

蓝桥杯【第15届省赛】Python B组

这题目难度对比历届是相当炸裂的简单了…… A&#xff1a;穿越时空之门 【问题描述】 随着 2024 年的钟声回荡&#xff0c;传说中的时空之门再次敞开。这扇门是一条神秘的通道&#xff0c;它连接着二进制和四进制两个不同的数码领域&#xff0c;等待着勇者们的探索。 在二进制…

AndroidAutomotive模块介绍(二)应用及接口介绍

前言 上一篇文章中从整体角度描述了 Android Automotive 模块。本篇文章将对 Android Automotive 中的 APP 以及 API 部分展开描述。 上一篇&#xff1a;AndroidAutomotive模块介绍&#xff08;一&#xff09;整体介绍 下一篇&#xff1a;AndroidAutomotive模块介绍&#xff0…

【前端】es-drager 图片同比缩放 缩放比 只修改宽 只修改高

【前端】es-drager 图片同比缩放 缩放比 ES Drager 拖拽组件 (vangleer.github.io) 核心代码 //初始宽 let width ref(108)//初始高 let height ref(72)//以下两个变量 用来区分是单独的修改宽 还是高 或者是同比 //缩放开始时的宽 let oldWidth 0 //缩放开始时的高 let o…

用Python生成纯色图片的方法

第一步 导入PIL库&#xff08;事先安装好&#xff09; 这一步如果PIL搜索不到&#xff0c;可以搜索【pillow】 第二步 设置图片的尺寸&#xff08;宽度&#xff0c;高度&#xff09;和颜色 第三步 保存图片为xx格式&#xff08;png或者jpg&#xff09; 比如生成一张红色&am…

C++零基础入门

大家好久不见&#xff0c;我是残念我回来了&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#x…

LeetCode-72. 编辑距离【字符串 动态规划】

LeetCode-72. 编辑距离【字符串 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;动规五部曲解题思路二&#xff1a;动态规划【版本二】解题思路三&#xff1a;0 题目描述&#xff1a; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最…

模组硬件通用|ESD静电释放注意事项

当我们在进行接插件操作或者电路板调试时&#xff0c;有时会出现接口损坏或者电路板上的某个IC芯片失效的情况&#xff0c;原因可能仅仅是手触摸到了IC芯片&#xff0c;ESD(Electro-Static discharge 静电释放)导致了损坏。模组作为一个集成电路板&#xff0c;内部含有不同型号…

C语言:约瑟夫环问题详解

前言 哈喽&#xff0c;宝子们&#xff01;本期为大家带来一道C语言循环链表的经典算法题&#xff08;约瑟夫环&#xff09;。 目录 1.什么是约瑟夫环2.解决方案思路3.创建链表头结点4.创建循环链表5.删除链表6.完整代码实现 1.什么是约瑟夫环 据说著名历史学家Josephus有过以下…

弱口令入侵FE企业管理平台【附口令】

漏洞描述 飞企互联-FE企业运营管理平台 druid路径弱口令&#xff0c;攻击者可能通过尝试弱口令&#xff0c;非法进入系统&#xff0c;恶意操作或者收集信息进一步攻击利用。 漏洞复现 1、Fofa app"飞企互联-FE企业运营管理平台"2、零零信安 (html_banner360浏览…

C# Web应用调用EXE文件的一些实践

目录 需求 范例运行环境 可执行文件的设计 调用可执行文件方法 RunExecuteFile RunShellExecuteFile 方法的区别 WEB调用举例 小结 需求 最近同事使用Python开发了一款智能文字转语音的程序&#xff0c;经讨论部署在WINDOWS环境服务器下&#xff0c;因此需要生成目标…

软件供应链安全:寻找最薄弱的环节

在当今的数字时代&#xff0c;软件占据主导地位&#xff0c;成为全球组织业务和创新的支柱。它是差异化、项目效率、成本降低和竞争力背后的驱动力。软件决定了企业如何运营、管理与客户、员工和合作伙伴的关系&#xff0c;以及充分利用他们的数据。 挑战在于&#xff0c;当今…

【Godot4.2】CanvasItem绘图函数全解析 - 0.概述

概述 Godot提供了CanvasItem类型&#xff0c;并提供了_draw虚函数和一系列绘图函数。通过这些绘图函数&#xff0c;我们可以绘制各种图形、文本、纹理、样式盒、导航路径、辅助线以及制作自定义Node2D或Control。 我个人以往研究和使用比较多的是基础图形绘制功能&#xff0c…

pbootcms百度推广链接打不开显示404错误页面

PbootCMS官方在2023年4月21日的版本更新中&#xff08;对应V3.2.5版本&#xff09;&#xff0c;对URL参数添加了如下判断 if(stripos(URL,?) ! false && stripos(URL,/?tag) false && stripos(URL,/?page) false && stripos(URL,/?ext_) false…

【算法分析与设计】全排列

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 示例 1&#xff1…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

探秘大模型:《提示工程:技巧、方法与行业应用》背后的故事

提示工程是一种新兴的利用人工智能的技术&#xff0c;它通过设计提示引导生成式 AI 模型产生预期的输出&#xff0c;来提升人与 AI 的互动质量&#xff0c;激发 AI 模型的潜力&#xff0c;提升AI的应用水平。 为了让每一个人都拥有驱动大模型的能力&#xff0c;以微软全球副总裁…

Acwing.3999 最大公约数(gcd欧拉函数)

题解 给定两个正整数 a,m&#xff0c;其中 a<m。 请你计算&#xff0c;有多少个小于 m 的非负整数 x满足&#xff1a; gcd(a,m)gcd(ax,m) 输入格式 第一行包含整数 T &#xff0c;表示共有 T 组测试数据。 每组数据占一行&#xff0c;包含两个整数 a,m 。 输出格式 每…

计算机网络——40各个层次的安全性

各个层次的安全性 安全电子邮件 Alice需要发送机密的报文m给Bob Alice 产生随机的对称秘钥&#xff0c; K s K_s Ks​使用 K s K_s Ks​对报文进行加密&#xff08;为了效率&#xff09;对 K s K_s Ks​使用Bob的公钥进行加密发送 K s ( m ) K_s(m) Ks​(m)和 K B ( K S ) K…

Linux执行命令监控详细实现原理和使用教程,以及相关工具的使用

Linux执行命令监控详细实现原理和使用教程&#xff0c;以及相关工具的使用。 0x00 背景介绍 Linux上的HIDS需要实时对执行的命令进行监控&#xff0c;分析异常或入侵行为&#xff0c;有助于安全事件的发现和预防。为了获取执行命令&#xff0c;大致有如下方法&#xff1a; 遍…