每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++

P8662 [蓝桥杯 2018 省 AB] 全球变暖 - 洛谷 (luogu.com.cn)

DFS

cpp 复制代码
#include<iostream>
using namespace std;
char a[1001][1001];
bool s[1001][1001];
int res = 0;
int n;
bool flag = true;
int dx[4] = { -1,0,1,0 };
int dy[4] = { 0,-1,0,1 };
void dfs(int x, int y) {
	s[x][y] = true;
	bool safe = true;
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i];
		int ny = y + dy[i];
		if (nx<1 || ny>n || ny<1 || nx>n || a[nx][ny] == '.') {
			safe = false;
			break;
		}
	}
	if (safe)flag = true;
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i];
		int ny = y + dy[i];
		if (nx >= 1 && nx <= n && ny >= 1 && ny <= n && a[nx][ny] == '#' && !s[nx][ny]) {
			dfs(nx, ny);
		}
	}
}
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 (a[i][j] == '#' && !s[i][j]) {
				flag = false;
				dfs(i, j);
				if (!flag)res++;
			}
			flag = false;
		}
	}
	cout << res;
	return 0;
}
相关推荐
计信金边罗4 小时前
是否存在路径(FIFOBB算法)
算法·蓝桥杯·图论
緈福的街口6 小时前
【leetcode】347. 前k个高频元素
算法·leetcode·职场和发展
南郁6 小时前
007-nlohmann/json 项目应用-C++开源库108杰
c++·开源·json·nlohmann·现代c++·d2school·108杰
半桔6 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
鑫鑫向栄6 小时前
[蓝桥杯]春晚魔术【算法赛】
算法·职场和发展·蓝桥杯
菠萝017 小时前
共识算法Raft系列(1)——什么是Raft?
c++·后端·算法·区块链·共识算法
海棠蚀omo7 小时前
C++笔记-C++11(一)
开发语言·c++·笔记
凌佚8 小时前
rknn优化教程(一)
c++·目标检测·性能优化
Lenyiin11 小时前
《 C++ 点滴漫谈: 四十 》文本的艺术:C++ 正则表达式的高效应用之道
c++·正则表达式·lenyiin
yxc_inspire12 小时前
基于Qt的app开发第十三天
c++·qt·app·tcp·面向对象