[蓝桥杯2018初赛]全球变暖-dfs,bfs,连通块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解题思路:
bfs:遍历所有未遍历过的陆地,通过bfs计算出当前位置连通陆地的数量cnt,以及被淹没陆地的数量bound,若cnt == bound表示完整淹没的一个岛屿

dfs:将连通块全部标记,如果这个连通块全部都会淹没,则答案+1,如果这个连通块里面有无法被淹没的,就不+1

bfs代码如下:

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
typedef pair<int, int>PII;
#define x first
#define y second
const int N = 1010;
char g[N][N];
int res = 0;
bool st[N][N];
int n;int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};void bfs(int x, int y, int &cnt, int &bound) {queue<PII>q;q.push({x, y});st[x][y] = true;while (q.size()) {bool is_bound = false;PII t = q.front();cnt++;q.pop();for (int i = 0; i < 4; i++) {int xx = t.x + dx[i], yy = t.y + dy[i];if (xx < 0 || xx >= n || yy < 0 || yy >= n)continue;if (g[xx][yy] == '.') {is_bound = true;continue;}if (st[xx][yy])continue;st[xx][yy] = true;q.push({xx, yy});}if (is_bound) {bound++;}}}int main() {cin >> n;for (int i = 0; i < n; i++)cin >> g[i];for (int i = 0; i < n; i++)for (int j = 0; j < n; j++) {if (g[i][j] == '#' && !st[i][j]) {int bound = 0, cnt = 0;bfs(i, j, cnt, bound);if (cnt == bound)res++;}}cout << res << endl;return 0;
}

dfs代码如下:

#include <iostream>
using namespace std;
const int N = 1010;
char g[N][N];
int ans;bool flag;int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};
bool vis[N][N];void dfs(int x, int y) {if (g[x + 1][y] == '#' && g[x - 1][y] == '#' && g[x][y + 1] == '#' && g[x][y - 1] == '#')flag = true;///上下左右都是陆地,不会淹没for (int i = 0; i < 4; i++) {int xx = x + dx[i], yy = y + dy[i];if (g[xx][yy] == '#'  && !vis[xx][yy]) {vis[xx][yy] = true;dfs(xx, yy);}}
}int main() {int n;cin >> n;for (int i = 1; i <= n; i++)cin >> g[i];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {if (g[i][j] == '#' && !vis[i][j]) {flag = false;dfs(i, j);if (!flag)ans++;}}cout << ans << endl;return 0;
}

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

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

相关文章

latex 参考文献显示问号_回「LaTeX 的罪与罚」

原文链接&#xff1a;LaTeX 的罪与罚 - 朴素的贝叶斯的文章 - 知乎作为 LaTeX 开发者&#xff0c;看到这种嘲讽自然是非常 angry 的。本来并不想趟这个混水&#xff0c;然而眼见着赞数一天天涨上去&#xff0c;还居然进了精华区&#xff0c;实在忍不住只好注册了贵乎来说几句。…

疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公

当前情况下&#xff0c;经常会有需要到公司电脑进行一些操作&#xff0c;比如连接内网OA&#xff0c;数据库或者提交文档。为了减少外出&#xff0c;将使用frp进行内网穿透的方法进行一个说明。前提条件1. 一台拥有公网 IP 的设备(如果没有&#xff0c;服务器可以使用https://d…

ad中电容用什么封装_二极管在电路中到底做什么用的

所有的电子电路中基本上都会用到二极管&#xff0c;它的特性也是非常之多&#xff0c;最主要就是单方向导电性&#xff0c;(单向导电性的两根引脚之间的电阻分为正向电阻和反向电阻两种)。人们利用这些不同特性构成各种具体的应用电路&#xff0c;分析不同电路中的二极管工作原…

数据结构---邻接矩阵的DFS

数据结构—邻接矩阵的DFS 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define elemType int //const int MAX_INT (1 << 31) - 1; //const int MAX_INT 0X7fffffff; #define INF (((uns…

.NET Core 如何判断程序是否在远程桌面(RDP)下运行

点击上方蓝字关注“汪宇杰博客”导语由于疫情的关系&#xff0c;很久没发文章了。今天终于稳定下来在家办公&#xff0c;抽空分享一个刚学会的技巧。最近在家办公的程序员可能避免不了要用远程桌面&#xff0c;那么问题来了&#xff0c;你的 .NET Core 程序有没有办法知道自己是…

[蓝桥杯2018初赛]方格计数-巧妙枚举,找规,数论

解题思路&#xff1a; 枚举第一象限的所有点&#xff0c;判断是否在圆内&#xff0c;最后结果*4 我们用下面的程序&#xff0c;来算一个半径为2的圆&#xff0c;其实我们第一象限算的就是那个绿点&#xff0c;然后类比到半径5000. 代码如下&#xff1a; #include <iostre…

ipa在线安装搭建_三种越狱工具安装方法

从 iOS 9.2 开始&#xff0c;苹果越狱进入了半越狱时代&#xff0c;也就是重启手机之后需要重新进入越狱工具激活越狱环境&#xff0c;以下是三种常用的越狱工具安装方法&#xff1a;方法一&#xff1a;自签名下载大胡子签名工具&#xff1a;Cydia Impactor下载地址&#xff1a…

《ASP.NET Core 微服务实战》-- 读书笔记(第7章)

第 7 章 开发 ASP.NET Core Web 应用ASP.NET Core 基础在本章&#xff0c;我们将从一个命令行应用开始&#xff0c;并且在不借助任何模板&#xff0c;脚手架和向导的情况下&#xff0c;最终得到一个功能完整的 Web 应用GitHub链接&#xff1a;https://github.com/microservices…

git为私有仓库设置密码_dnf仓库密码设置不跳出 dnf仓库密码设置流程

部分玩家想要设置游戏中仓库密码但是自己不小心点击了不再提醒后不再弹出了&#xff0c;那么怎么办呢&#xff0c;其实不用着急&#xff0c;下面带大家了解一下如何设置设置仓库锁密码&#xff0c;感兴趣的玩家可以玩下看看哦。dnf仓库密码设置不跳出在游戏中玩家每天第一次登陆…

word List 07

word List 07 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

TIOBE 2月编程语言排行榜新鲜出炉!C# 获3.08%增长率!

编程C# 刚经历了一次TIOBE考试&#xff0c;2020年2月&#xff0c;它拿到的最新分数是第5名。老牌编程语言Java独占鳌头&#xff0c;C语言紧随其后。诚然&#xff0c;工程师们对C# 的青睐&#xff0c;还没能影响到大多数企业&#xff0c;但增长率3.08%的势头&#xff0c;可凭此预…

自动生成sqlserver增删改成_如何批量生成证书证件-可变条码-可变图片-可变数据-快速教程...

如何生成可变图像&#xff1f;如何生成可变文本&#xff1f;如何生成可变条码&#xff1f;如何使打印作业自动化&#xff1f;从多页设计中选取页使用几乎所有数据库程序中的数据库信息通过“拖放”创建个性化打印分享快速教程。1&#xff1a;批量自动化化印刷详细步骤如下&…

线性代数---矩阵的各种问题求解方法

线性代数—矩阵的各种问题求解方法 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

ERP开放平台定制化远程高效协作秘笈

疫情期间&#xff0c;远程研发协作办公成为各企业的主要工作方式&#xff0c;本文将明源云以往的研发实践&#xff0c;结合本次远程办公的实际经验&#xff0c;分享一下面对跨地区多团队&#xff0c;如何高效在线协同&#xff0c;保证研发质量与效率的实践经验。面对当前严重的…

[蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组

解题思路&#xff1a; 这题如果我们考虑蚱蜢跳&#xff0c;有很多蚱蜢&#xff0c;有很多情况&#xff0c;所以我们让空盘跳&#xff0c;这样就简化题目了&#xff0c;然后我们化圆为直&#xff0c;将题目的情况看成字符串012345678&#xff0c;最后要变成087654321&#xff0c…

win10玩cf不能全屏_如何优化Win10游戏流畅运行?Win10游戏流畅运行优化教程

很多小伙伴们在安装了win10操作系统之后&#xff0c;运行游戏的过程中可能就会遇到游戏卡顿不流畅的情况。如何优化Win10游戏流畅运行&#xff1f;在这里小编为大家准备了一些解决游戏卡顿的小妙招&#xff0c;一起看下吧~如何优化Win10游戏流畅运行一. 关闭nagle算法很多人对于…

数据结构---邻接表的DFS

数据结构—邻接表的DFS 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define typeNode int //每个头结点的标识数据类型 #define N 100 //最大结点数 int degree[N]; int result[N]; bool visited[N]; typedef str…

简化MVVM属性设置和修改 - .NET CORE(C#) WPF开发

阅读导航常用类属性设置、获取方式二次封装 INotifyPropertyChangedDemo 展示、源码下载1. 常用类属性设置、获取方式public class Student : INotifyPropertyChanged {private string name;public string Name{get { return name; }set{if(name ! value){name value;OnProper…

李洪超 硬件工程师_西安职位|各类工程师,软件开发等多岗位招募,轻松月入过万,全程视频面试...

点击上方蓝字关注我们西安卓华联盛科技有限公司公司简介&#xff1a; 深圳市卓翼科技股份有限公司(以下简称“卓翼科技”)创始于2004年&#xff0c;2010年3月在深交所挂牌上市(证券代码&#xff1a;002369)。卓翼科技专业从事通讯、计算机、消费类电子等产品的研发、制造与销售…

word List 08

word List 08 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;