该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顺便大佬帮看下代码,是不是代码写的太笨拙了,跟语言没关系
import java.util.Scanner;
import java.util.Queue;
import java.util.LinkedList;
public class Main{
private static int[][][] maze;
private static int[] dx={1,-1,0,0,0,0};
private static int[] dy={0,0,1,-1,0,0};
private static int[] dz={0,0,0,0,1,-1};
private static int m;
private static int n;
private static int l;
private static int limit;
private static int strokePieces=0;
public static void main(String[] args){
Scanner in=new Scanner(System.in);
m=in.nextInt();
n=in.nextInt();
l=in.nextInt();
limit=in.nextInt();
maze=new int[m][n][l];
for(int i=0;i
for(int j=0;j
for(int k=0;k
maze[j][k][i]=in.nextInt();
}
}
}
for(int i=0;i
for(int j=0;j
for(int k=0;k
if(maze[j][k][i]==1)
breadthFirstSearch(j,k,i);
}
}
}
System.out.println(strokePieces);
}
static boolean inRange(int x,int y, int z){
return x=0 && y=0 && z=0;
}
public static void breadthFirstSearch(int x,int y,int z){
int result=1;
Queue queue=new LinkedList();
queue.add(new Node(x,y,z));
maze[x][y][z]=0;
while(!queue.isEmpty()){
Node newNode=queue.poll();
for(int i=0;i<6;i++){
int nx=newNode.x+dx[i];
int ny=newNode.y+dy[i];
int nz=newNode.z+dz[i];
if(inRange(nx,ny,nz) && maze[nx][ny][nz]==1){
maze[nx][ny][nz]=0;
result++;
Node next=new Node(nx,ny,nz);
queue.add(next);
}
}
}
if(result>=limit) strokePieces+=result;
}
static class Node{
int x;
int y;
int z;
public Node(int x,int y,int z){
this.x=x;
this.y=y;
this.z=z;
}
}
}