//、全球变暖
import java.util.Scanner;
public class Demo_9_09 {
static int n;
static int m;
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
n=in.nextInt();
int count1=0; //、原始岛屿总数
char[][] a=new char[n][]; //a统计原始岛屿数目
char[][] b=new char[n][];
char[][] c=new char[n][];
for(int i=0;i<n;i++) {
a[i]=in.next().toCharArray();
}
for(int i=0;i<n;i++) {
b[i]=a[i];
}
for(int i=0;i<n;i++) {
c[i]=a[i];
}
m=a[0].length;
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(a[i][j]=='#') {
dfs(a,i,j);
count1++;
}
}
}
//System.out.println(count1); //、计算出原始岛屿总数,然后求淹没后的岛屿数,进行相减
char temp;
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(i!=0&&i!=n-1&&j!=0&&j!=m-1) { //、先保证不在第一行,第一列,最后一行,最后一列
temp=c[i][j];
if(temp=='#') {
if(a[i-1][j]!=temp||a[i][j-1]!=temp||a[i+1][j]!=temp||a[i][j+1]!=temp) {
b[i][j]='.';
}
}
}else { //、在这些位置直接淹没
b[i][j]='.';
}
}
}
int count2=0;
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(b[i][j]=='#') {
dfs2(b,i,j);
count2++;
}
}
}
System.out.println("count2 "+count2);
System.out.println(count1-count2);
}
public static void dfs2(char[][] arr,int x,int y) {
arr[x][y]='.';
//、向左
if(y>0&&arr[x][y-1]=='#') dfs(arr,x,y-1);
//、向右
if(y<m&&arr[x][y+1]=='#') dfs(arr,x,y+1);
//、向上
if(x>0&&arr[x-1][y]=='#') dfs(arr,x-1,y);
//、向下
if(x<n&&arr[x+1][y]=='#') dfs(arr,x+1,y);
}
public static void dfs(char[][] arr,int x,int y) {
arr[x][y]='.';
for(int i=-1;i<2;i++) {
for(int j=-1;j<2;j++) {
if(i+x>=0&&i+x<n&&j+y>=0&&j+y<m) {
if(i==0&&j==0)continue;
if(arr[i+x][j+y]=='#') {
dfs(arr,i+x,j+y);
}
}
}
}
}
}
9-9 全球变暖Java
最新推荐文章于 2023-04-06 14:40:33 发布