蓝桥杯每日一题2023.10.31

题目描述

全球变暖 - 蓝桥云课 (lanqiao.cn)

题目分析

果然有关连通块类的问题使用dfs都较为好写~~

我们可以通过判断连通块的代码来加上部分条件算出被完全淹没的岛屿个数

在岛屿中如果有为"#"的aij上下左右全部是"#"则说明此岛屿一定不会被完全淹没,但如果此连通块全部被遍历后发现没有这种情况则这个岛屿一定会被完全淹没,这时我们才看做它是真正我们要求的连通块,我们将其算入答案

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
const int N = 2e3 + 10;
int n, cnt, ans;
char a[N][N];
bool st[N][N];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
void dfs(int x, int y)
{
	st[x][y] = 1;
	int o = 0;
	for(int i = 0; i < 4; i ++)
	{
		int aa = x + dx[i];
		int bb = y + dy[i];
		if(a[aa][bb] == '#')o ++;
	}
	if(o == 4)cnt ++;
	for(int i = 0; i < 4; i ++)
	{
		int aa = x + dx[i];
		int bb = y + dy[i];
		if(a[aa][bb] == '#' && !st[aa][bb])dfs(aa, bb);
	}
}

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i ++)
	{
		for(int j = 1; j <= n; j ++)
		{
			cin >> a[i][j];
		}
	}
	for(int i = 1; i <= n; i ++)
	{
		for(int j = 1; j <= n; j ++)
		{
			if(!st[i][j] && a[i][j] == '#')
			{
				cnt = 0;
				dfs(i, j);
				if(cnt == 0)ans ++;
			}	
		}
	}
	cout << ans;
	return 0;
}
相关推荐
8Qi812 小时前
LeetCode 494:目标和(Target Sum)—— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
这料鬼有毒15 小时前
二刷hot100-78.子集
算法·leetcode·职场和发展
li星野18 小时前
FAISS 详解:原理、使用与面试指南——向量检索的基石
面试·职场和发展·faiss
mifengxing18 小时前
LeetCode热题100——字母异位词分组
java·算法·leetcode·职场和发展·哈希表·hot100
I Promise3419 小时前
智驾APA_HPA可行驶区域检测算法工程师面试问题整理可参考
算法·面试·职场和发展
迈巴赫车主20 小时前
蓝桥杯21241灯塔java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯·动态规划
酉鬼女又兒21 小时前
零基础入门计算机网络可靠传输:从基本概念到三大实现机制(停止 - 等待 / 回退 N 帧 / 选择重传)全解析
网络·网络协议·计算机网络·考研·职场和发展·计算机外设·求职招聘
凯瑟琳.奥古斯特21 小时前
力扣1003题C++解法详解
开发语言·c++·算法·leetcode·职场和发展
大学竞赛君1 天前
第十六届蓝桥杯大赛软件赛决赛 Python 大学 A 组
python·职场和发展·蓝桥杯
luweis1 天前
企智孪生 ETA (6.3 数字人格 (Digital Persona) 的构建工程、6.4 交互触点:全场景嵌入策略)【杭州联保致新科技有限公司 卢伟舜】
人工智能·程序人生·机器学习·自然语言处理·职场和发展·知识图谱·学习方法