package edu.whu.cs;
import java.util.Scanner;
public class Solution {
public static boolean DFS(char arr[][],boolean visited[][],int row,int column,int x,int y){
//
if(x>=row||y>=column||x<0||y<0){
return true;
}
//
if(visited[x][y])
return true;
//
int temp=arr[x][y];
if(temp=='2'){
visited[x][y]=true;
DFS(arr,visited,row,column,x,y+1);
DFS(arr,visited,row,column,x+1,y);
DFS(arr,visited,row,column,x,y-1);
return false;
}else if(temp=='0'){
boolean fl=true,fd=true,fr=true;
visited[x][y]=true;
fr=DFS(arr,visited,row,column,x,y+1);
fd=DFS(arr,visited,row,column,x+1,y);
fl=DFS(arr,visited,row,column,x,y-1);
return fl&&fd&&fr;
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
//
String[] lines=sc.nextLine().split(" ");
//
int row=Integer.parseInt(lines[0]);
int column=Integer.parseInt(lines[1]);
if(row<1||column<1){
System.out.println(0);
sc.close();
return;
}
//
char map[][]=new char[row][];
boolean visited[][]=new boolean[row][column];
//
for(int i=0;i<row;i++){
map[i]=sc.nextLine().toCharArray();
}
//
int safeNum=0;
//
for(int i=0;i<row;i++){
for(int j=0;j<column;j++){
char val=map[i][j];
if((val=='0'||val=='2')&&visited[i][j]==false){
if(DFS(map,visited,row,column,i,j))
safeNum++;
}
}
}
System.out.println(safeNum);
sc.close();
}
}
和迷宫类似的问题
最新推荐文章于 2024-05-01 20:15:53 发布