c++求调,玄关
查看原帖
c++求调,玄关
1047798
nahida_badminton楼主2024/5/21 21:49
#include <bits/stdc++.h>
using namespace std;
int n, a1 = 0, a2 = 0, i, j, f1[4] = {-1, 0, 1, 0}, f2[4] = {0, 1, 0, -1};
char c1[1005][1005], c2[1005][1005];

void dfs(int a, int b){
	c1[a][b] = '.';
	for (i = 0; i < 4; i++){
		if (c1[a + f1[i]][b + f2[i]] != '.')
			dfs(a + f1[i], b + f2[i]);
	}
	return;
}

void fsl(int a, int b){
	c2[a][b] = '.';
	for (i = 0; i < 4; i++){
		if (c2[a + f1[i]][b + f2[i]] == '#')
			fsl(a + f1[i], b + f2[i]);
	}
	return;
}

int main(){
	ios::sync_with_stdio(0);
	cin >> n;
	for (i = 1; i <= n; i++){
		for (j = 1; j <= n; j++) cin >> c1[i][j], c2[i][j] = c1[i][j];
	}
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++)
			if (c1[i][j] == '#' && (c1[i - 1][j] == '.' || c1[i + 1][j] == '.' || c1[i][j + 1] == '.' || c1[i][j - 1] == '.')) c1[i][j] = '-';
	for (i = 1; i <= n; i++){
		for (j = 1; j <= n; j++){
			if (c2[i][j] == '#'){
				a1++;
				fsl(i, j);
			}
		}
	}
	for (i = 1; i <= n; i++){
		for (j = 1; j <= n; j++){
			if (c2[i][j] == '#'){
				a2++;
				dfs(i, j);
			}
		}
	}
	cout << a1 - a2 << endl;
	return 0;
}

2024/5/21 21:49
加载中...