

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;
}
