import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
char[][] map = new char[n][n];
boolean[][] vis = new boolean[n][n];
boolean[][] vis2 = new boolean[n][n];
for (int i = 0; i < n; i++) {
map[i] = scan.next().toCharArray();
}
int fieldCount = 0;
int resCount = 0;
boolean [] flag = {false,false,false,false};
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(vis[i][j] == false && map[i][j] == '#'){
fieldCount+=1;
dfs(map,i,j,vis,flag);
if(flag[0] && flag[1] && flag[2] && flag[3]){
resCount+=1;
flag[0] = false;
flag[1] = false;
flag[2] = false;
flag[3] = false;
}
}
}
}
System.out.println(fieldCount-resCount);
}
private static void check(char[][] map, int i, int j,boolean [] flag) {
if(map[i][j] == '.' || i<0 || i == map.length || j<0 || j == map[0].length){
return;
}
if(i+1 < map.length && map[i+1][j] == '#'){
flag[0] = true;
}
if(j+1< map[0].length && map[i][j+1] == '#'){
flag[1] = true;
}
if(i-1>=0 && map[i-1][j] == '#'){
flag[2] = true;
}
if(j-1>=0 && map[i][j-1] == '#'){
flag[3] = true;
}
}
private static void dfs(char[][] map, int i, int j, boolean [][] vis,boolean[] flag) {
if(map[i][j] == '.' || i<0 || i == map.length || j<0 || j == map[0].length){
return;
}
if(!flag[0] || !flag[1] || !flag[2] || !flag[3]){
flag[0] = false;
flag[1] = false;
flag[2] = false;
flag[3] = false;
}
vis[i][j] = true;
check(map,i,j,flag);
if(map[i+1][j] == '#' && vis[i+1][j] == false){
dfs(map,i+1,j,vis,flag);
}
if(map[i][j+1] == '#' && vis[i][j+1] == false){
dfs(map,i,j+1,vis,flag);
}
if(map[i-1][j] == '#' && vis[i-1][j] == false){
dfs(map,i-1,j,vis,flag);
}
if(map[i][j-1] == '#' && vis[i][j-1] == false){
dfs(map,i,j-1,vis, flag);
}
}
}
蓝桥杯 全球变暖 JAVA
最新推荐文章于 2022-03-20 12:29:36 发布