每日一题洛谷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;
}
相关推荐
cany10004 分钟前
C++ -- 引用悬挂
c++
.千余38 分钟前
【C++】C++类与对象3:const成员函数与取地址运算符重载,权限管理的艺术
开发语言·c++
QiLinkOS1 小时前
【用呼吸重构创造价值关系——QiLink生态】
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法
朔北之忘 Clancy1 小时前
2026 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·考级
我爱cope1 小时前
【Agent智能体13 | 工具使用-什么是工具?】
人工智能·语言模型·职场和发展
he___H1 小时前
面试场景题
面试·职场和发展
晚风予卿云月2 小时前
【前缀和】一维前缀和 & 二维前缀和
数据结构·c++·算法
myjs9992 小时前
意识的两种类型
c++
Lumos_7773 小时前
程序的诞生
c++
basketball6163 小时前
C++ static_cast 完全解析
开发语言·c++