pat java 超时_用java写pat算法题,超时怎么办?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

顺便大佬帮看下代码,是不是代码写的太笨拙了,跟语言没关系

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;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值