Leuy 2022-02-28 19:32 采纳率: 0%
浏览 40

蓝桥杯 勇士与地雷 运行错误

一直都是运行错误,测试的结果都正确的
帮忙看看是哪里的错误
下面是提交的代码


import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main{
    private static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        String mine[] = new String[510]; //地雷
        int dis[][] = new int[510][510]; //各个点到0,0点的最小距离
        for (int i = 0; i < n; i++) {
            mine[i] = sc.next();
        }

        bfs(0,0,mine,dis);
        int x,y,z;
        while(true){
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
            if(x == 0 && y == 0 )
                System.out.println(1);
            else if(dis[x][y] <= z && dis[x][y] !=0 )
                System.out.println(1);
            else
                System.out.println(-1);
        }
    }

    private static void bfs(int x, int y,String mine[],int dis[][]) {
        Queue<Node> queue = new LinkedList<>();
        queue.add(new Node(0,0));
        dis[x][y] = 0;
        int dx[]={-1,0,1,0};
        int dy[]={0,1,0,-1};
        while(!queue.isEmpty()){
            Node temp = queue.remove();
            for (int i = 0; i < 4; i++) {
                int nx,ny;
                nx = temp.x + dx[i];
                ny = temp.y + dy[i];
                if(nx<0 || nx> n-1 || ny < 0 || ny> n-1) continue;
                if(dis[nx][ny]!=0)continue;
                if(mine[nx].charAt(ny)=='*')continue;
                dis[nx][ny] = dis[temp.x][temp.y]+1;
                queue.add(new Node(nx,ny));
            }
        }
    }
    static class Node{
        int x;
        int y;
        public Node(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
}
  • 写回答

1条回答 默认 最新

  • 关注
    
    static class Node{
    改为普通类,放在类的外部。
    class Node{
    
    
    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.Scanner;
     
    public class Main{
        private static int n;
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            String mine[] = new String[510]; //地雷
            int dis[][] = new int[510][510]; //各个点到0,0点的最小距离
            for (int i = 0; i < n; i++) {
                mine[i] = sc.next();
            }
     
            bfs(0,0,mine,dis);
            int x,y,z;
            while(true){
                x = sc.nextInt();
                y = sc.nextInt();
                z = sc.nextInt();
                if(x == 0 && y == 0 )
                    System.out.println(1);
                else if(dis[x][y] <= z && dis[x][y] !=0 )
                    System.out.println(1);
                else
                    System.out.println(-1);
            }
        }
     
        private static void bfs(int x, int y,String mine[],int dis[][]) {
            Queue<Node> queue = new LinkedList<>();
            queue.add(new Node(0,0));
            dis[x][y] = 0;
            int dx[]={-1,0,1,0};
            int dy[]={0,1,0,-1};
            while(!queue.isEmpty()){
                Node temp = queue.remove();
                for (int i = 0; i < 4; i++) {
                    int nx,ny;
                    nx = temp.x + dx[i];
                    ny = temp.y + dy[i];
                    if(nx<0 || nx> n-1 || ny < 0 || ny> n-1) continue;
                    if(dis[nx][ny]!=0)continue;
                    if(mine[nx].charAt(ny)=='*')continue;
                    dis[nx][ny] = dis[temp.x][temp.y]+1;
                    queue.add(new Node(nx,ny));
                }
            }
        }
    }
    class Node{
            int x;
            int y;
            public Node(int x, int y) {
                this.x = x;
                this.y = y;
            }
        }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月28日

悬赏问题

  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)