zoukankan      html  css  js  c++  java
  • 174 Dungeon Game 地下城游戏

    一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格布局。我们英勇的骑士(K)最初被安置在左上角的房间里,并且必须通过地下城对抗来拯救公主。
    骑士具有以正整数表示的初始健康点。如果他的健康点在任何时候降至 0 或以下,他会立即死亡。
    有些房间由恶魔守卫,因此骑士在进入这些房间时失去健康点(负整数);其他房间要么是空的(0),要么包含增加骑士身体健康的魔法球(正整数)。
    为了尽快到达公主,骑士决定只会每次向右或向下移动一步。
    写一个函数来确定骑士的最低初始健康点数,以便他能够拯救公主。

    详见:https://leetcode.com/problems/dungeon-game/description/

    Java 实现:

    方法一:

    class Solution {
        public int calculateMinimumHP(int[][] dungeon) {
            int row = dungeon.length;
            int col = dungeon[0].length;
            dungeon[row - 1][col - 1] = Math.max(1 - dungeon[row - 1][col - 1], 1);
            for (int i = col - 2; i >= 0; i--) {
                dungeon[row - 1][i] = Math.max(dungeon[row - 1][i + 1] - dungeon[row - 1][i], 1);
            }
            for (int i = row - 2; i >= 0; i--) {
                dungeon[i][col - 1] = Math.max(dungeon[i + 1][col - 1] - dungeon[i][col - 1], 1);
            }
            
            for (int i = row - 2; i >= 0; i--) {
                for (int j = col - 2; j >= 0; j--) {
                    int down = Math.max(dungeon[i + 1][j] - dungeon[i][j], 1);
                    int right = Math.max(dungeon[i][j + 1] - dungeon[i][j], 1);
                    dungeon[i][j] = Math.min(down, right);
                }
            }
            
            return dungeon[0][0];
        }
    }
    

    方法二:

    class Solution {
        public int calculateMinimumHP(int[][] dungeon) {
            int m = dungeon.length, n = dungeon[0].length;
            int[] dp=new int[n + 1];
            Arrays.fill(dp,Integer.MAX_VALUE);
            dp[n - 1] = 1;
            for (int i = m - 1; i >= 0; --i) {
                for (int j = n - 1; j >= 0; --j) {
                    dp[j] = Math.max(1, Math.min(dp[j], dp[j + 1]) - dungeon[i][j]);
                }
            }
            return dp[0];
        }
    }
    

    参考:https://www.cnblogs.com/grandyang/p/4233035.html

  • 相关阅读:
    集合容器概述
    enum枚举类型
    this关键字、this()、super()
    重载与重写
    nginx报404的可能错误
    nginx常用命令
    vbs系统监控
    VBS windows监控
    Oracle SQL优化[转]
    shell /bin/bash^M: bad interpreter错误解决
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8733606.html
Copyright © 2011-2022 走看看