逃出生天

package nowcoder;

import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main48 {
    public static void main(String[] args) {
        new Solve48().solve();
    }
}

class Solve48{
    int row,col;
    int[] dx={-1,1,0,0};
    int[] dy={0,0,1,-1};
    private class Node{
        int x;
        int y;
        int hop;

        public Node(int x, int y, int hop) {
            this.x = x;
            this.y = y;
            this.hop = hop;
        }
    }
    public void solve(){
        Scanner s=new Scanner(new BufferedInputStream(System.in));
        row=s.nextInt();
        col=s.nextInt();
        int[][] grid=new int[row][col];
        for (int i = 0; i <row ; i++) {
            for (int j = 0; j < col; j++) {
                grid[i][j]=s.nextInt();
            }
        }
        System.out.println(getAns(grid));

    }
    private int getAns(int[][] grid){
        if (grid[0][0]<=0){
            return -1;
        }
        int[][] minTime=new int[row][col];
        for (int i = 0; i < row; i++) {
            Arrays.fill(minTime[i],Integer.MAX_VALUE);
        }
        Queue<Node> queue=new LinkedList<>();
        queue.add(new Node(0,0,0));
        while (!queue.isEmpty()){
            Node node=queue.poll();
            int x=node.x;
            int y=node.y;
            int hop=node.hop;
//            System.out.println(x+" "+y+" "+hop);
            if (minTime[x][y]<=hop||grid[x][y]<hop)continue;
            minTime[x][y]=hop;
            if (x==row-1&&y==col-1)return hop;
            for (int i = 0; i < dx.length; i++) {
                int nextX=dx[i]+x;
                int nextY=dy[i]+y;
                if (!inGrid(nextX,nextY))continue;
                queue.add(new Node(nextX,nextY,hop+1));
            }
        }
        return -1;
    }
    private boolean inGrid(int x,int y){
        return x>=0&&x<row&&y>=0&&y<col;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
6678次浏览 64人参与
# 你的实习产出是真实的还是包装的? #
1331次浏览 32人参与
# 米连集团26产品管培生项目 #
4778次浏览 206人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7108次浏览 37人参与
# 简历第一个项目做什么 #
31330次浏览 315人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186548次浏览 1115人参与
# MiniMax求职进展汇总 #
23237次浏览 303人参与
# 研究所笔面经互助 #
118790次浏览 577人参与
# 面试紧张时你会有什么表现? #
30416次浏览 188人参与
# 简历中的项目经历要怎么写? #
309595次浏览 4165人参与
# 职能管理面试记录 #
10723次浏览 59人参与
# AI时代,哪些岗位最容易被淘汰 #
62757次浏览 749人参与
# 网易游戏笔试 #
6377次浏览 83人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7007次浏览 154人参与
# 腾讯音乐求职进展汇总 #
160442次浏览 1107人参与
# 从哪些方向判断这个offer值不值得去? #
56712次浏览 357人参与
# 正在春招的你,也参与了去年秋招吗? #
362753次浏览 2632人参与
# 你怎么看待AI面试 #
179440次浏览 1183人参与
# 小红书求职进展汇总 #
226916次浏览 1357人参与
# 你的房租占工资的比例是多少? #
92147次浏览 896人参与
# 校招笔试 #
467748次浏览 2954人参与
# 经纬恒润求职进展汇总 #
155723次浏览 1085人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务