每日一题洛谷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;
}
相关推荐
学历真的很重要17 分钟前
Claude Code 万字斜杠命令指南
后端·语言模型·面试·职场和发展·golang·ai编程
萘柰奈19 分钟前
LeetCode刷题记录----62.不同路径(Medium)
算法·leetcode·职场和发展
Mr_WangAndy28 分钟前
C++设计模式_创建型模式_单件模式
c++·单例模式·设计模式
天才测试猿37 分钟前
Python常用自动化测试框架—Pytest详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
茉莉玫瑰花茶1 小时前
C++扩展 --- 并发支持库(补充3)
开发语言·c++
半桔1 小时前
【网络编程】TCP 粘包处理:手动序列化反序列化与报头封装的完整方案
linux·网络·c++·网络协议·tcp/ip
GUIQU.4 小时前
【QT】嵌入式开发:从零开始,让硬件“活”起来的魔法之旅
java·数据库·c++·qt
西阳未落7 小时前
C++基础(21)——内存管理
开发语言·c++·面试
超级大福宝8 小时前
使用 LLVM 16.0.4 编译 MiBench 中的 patricia遇到的 rpc 库问题
c语言·c++
wangjialelele8 小时前
Linux中的线程
java·linux·jvm·c++