全球变暖(蓝桥杯18I)

cpp 复制代码
#include<iostream>
#define D 7
using namespace std;
char map[D][D];
int x[] = { -1,1,0,0 };
int y[] = { 0,0,1,-1 };
void dfs(int a,int b) {
	map[a][b] = '*';
	for (int i = 0; i < 4;i++) {
		int nx = a + x[i];
		int ny = b + y[i];
		if (map[nx][ny] == '#') {
			dfs(nx,ny);
		}
	}
}
int cheak_Num() {
	int cnt = 0;
	for (int i = 0; i < D;i++) {
		for (int j = 0; j < D;j++) {
			if (map[i][j] == '#') {
				dfs(i,j);
				cnt++;
			}
		}
	}
	return cnt;
}
void drown() {
	for (int i = 0; i < D;i++) {
		for (int j = 0; j < D; j++) {
			if (map[i][j] == '#') {
				int cnt = 0;
				for (int z = 0; z < 4;z++) {
					int nx = i + x[z];
					int ny = j + y[z];
					if (map[nx][ny] == '#' || map[nx][ny] == '*') {
						cnt++;
					}
				}
				if (cnt < 4) {
					map[i][j] = '*';
				}
			}
		}
	}
}
int main() {
	for (int i = 0; i < D;i++) {
		for (int j = 0; j < D;j++) {
			cin >> map[i][j];
			getchar();
		}
	}
	int bf = cheak_Num();
	drown();
	int last = cheak_Num();
    cout<<(bf - last;
	return 0;
cpp 复制代码
#include<iostream>
using namespace std;
bool flag;
char a[1010][1010];
int cnt = 0;
int n;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
int ans = 0;
int rans = 0;
void dfs(int x,int y) {
	if (a[x][y] != '#') {
		return;
	}
	if (x>=n||x<0||y>=n||y<0) {
		return;
	}
	if (!flag) {
		cnt = 0;
		for (int i = 0; i < 4;i++) {
			int nx = x + dx[i];
			int ny = y + dy[i];
			if (nx < n&& nx>=0&&ny<n&&ny>=0&& a[nx][ny] != '.') {
				cnt++;
			}
		}
		if (cnt == 4) {
			ans++;
			flag = true;
		}
	}
	a[x][y] = '*';
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i];
		int ny = y + dy[i];
		dfs(nx, ny);
	}
}
int main() {
	cin >> n;
	for (int i = 0; i < n;i++) {
		for (int j = 0; j < n;j++) {
			cin >> a[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (a[i][j] == '#') {
				rans++;
				flag = false;
				dfs(i,j);
			}
		}
	}
	return 0;
}
相关推荐
每次的天空5 分钟前
Android第十三次面试总结基础
android·面试·职场和发展
海的诗篇_1 小时前
移除元素-JavaScript【算法学习day.04】
javascript·学习·算法
自动驾驶小卡1 小时前
A*算法实现原理以及实现步骤(C++)
算法
Unpredictable2221 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
编程绿豆侠1 小时前
力扣HOT100之多维动态规划:1143. 最长公共子序列
算法·leetcode·动态规划
珂朵莉MM1 小时前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人
fail_to_code2 小时前
递归法的递归函数何时需要返回值
算法
C137的本贾尼2 小时前
(每日一道算法题)二叉树剪枝
算法·机器学习·剪枝
前端小崔3 小时前
前端面试题之ES6保姆级教程
开发语言·前端·javascript·面试·职场和发展·ecmascript·es6