The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was initially positioned in the top-left room and must fight his way through the dungeon to rescue the princess.
The knight has an initial health point represented by a positive integer. If at any point his health point drops to 0 or below, he dies immediately.
Some of the rooms are guarded by demons, so the knight loses health (negative integers) upon entering these rooms; other rooms are either empty (0's) or contain magic orbs that increase the knight's health (positive integers).
In order to reach the princess as quickly as possible, the knight decides to move only rightward or downward in each step.
Write a function to determine the knight's minimum initial health so that he is able to rescue the princess.
For example, given the dungeon below, the initial health of the knight must be at least 7 if he follows the optimal path RIGHT-> RIGHT -> DOWN -> DOWN
.
-2 (K) | -3 | 3 |
-5 | -10 | 1 |
10 | 30 | -5 (P) |
public class Solution { public int calculateMinimumHP(int[][] dungeon) { if (dungeon == null || dungeon.length == 0 || dungeon[0] == null || dungeon[0].length == 0) { return 1; } int row = dungeon.length; int col = dungeon[0].length; int[][] dp = new int[row--][col--]; dp[row][col] = dungeon[row][col] > 0 ? 1 : -dungeon[row][col] + 1; for (int i = col-1; i >= 0; i--) { dp[row][i] = Math.max(dp[row][i+1] - dungeon[row][i], 1); } int right = 0; int down = 0; for (int i = row - 1; i >= 0; i--) { dp[i][col] = Math.max(dp[i+1][col] - dungeon[i][col], 1); for (int j = col-1; j >= 0; j--) { right = Math.max(dp[i][j+1] - dungeon[i][j], 1); down = Math.max(dp[i+1][j] - dungeon[i][j], 1); dp[i][j] = Math.min(right, down); } } return dp[0][0]; } }
相关推荐
本篇文章将详细解析一款名为"DungeonGame"的Python地下城游戏,通过分析其源代码,帮助读者深入理解Python编程以及Pygame库的运用。 首先,"DungeonGame.zip"是一个包含游戏资源和源代码的压缩包。其中,"Game.py...
Unity地下城资源包
Unity3D地牢游戏开发源码The Dungeon Game Kit
《地牢游戏》是一款基于C++编程语言开发的冒险类游戏。在这款游戏中,玩家将扮演一名勇敢的冒险者,探索充满神秘与危险的地牢,挑战各种怪物,寻找宝藏,不断提升自己的实力。C++作为一款强大的系统级和应用级编程...
地牢游戏要将游戏导入 intellij,请使用此链接。请确保使用 INTELLIJ PLSSSSSSSSS 它已内置 VCS 控制 BTW #要做的事情1)。 确保气泡的移动速度永远不会低于某个速度 2)。 修复从墙壁上反弹的问题 3)。...
Anatolia MUD是一款基于Diku MUD的多用户地下城游戏。 安那托利亚(Anatolia)是小亚细亚的另一个名字:亚洲与欧洲相交。 Anatolia MUD是一款基于文本的多用户游戏。 有关更多详细信息,请访问:...
JXFire是基于Java游戏服务器框架Project RedDwarf的用Java编写的多用户地下城游戏。
像素地牢游戏 一个基于2D数组的基本地牢游戏,具有非常基本的像素艺术/动画。 作为DIG 3480的最终项目-计算机作为媒介。 在4天内创建。 最初要求游戏具有一个级别,但是此实现的独特之处在于,每次用户玩游戏时,...
地牢游戏 基于文本的游戏,玩家可以在导致不同结局的随机选择事件的不同路径之间进行选择。 每个播放过程都是唯一的; 同一位玩家在不同的游戏流程中可能会经历非常不同的经历,从击败每个怪物到逃离地牢,到将骷髅...
##地牢游戏Dungeon Game 是一个用 Java 编写的 Dungeon Crawler Prototype。 ######Getting Started Extract latest.zip 运行 Dungeon-Game.jar ####特征随机生成的地图存货基本战斗系统####截图
lru缓存leetcode 力码 大批 152-最大乘积子阵列,169-多数元素,189-旋转阵列,198-房屋强盗 二分法 153-在旋转排序数组(II)中查找最小值,162-查找峰值元素 结构 ...174-Dungeon Game, HARD: 188
开源项目“Dungeon And Dragon Advance Game”旨在利用DnD 3.5版规则,构建一个多人在线的MUD游戏,为玩家提供一个全新的交互式体验。在这个项目中,你可以参与到游戏设计、编程、美工、音效等多个环节,共同打造一...
《Yet Another Dungeon-game-开源》是一款开放源代码的地下城冒险游戏,它的设计与开发遵循了开源软件的精神,鼓励用户参与、创新和分享。这款游戏中,“YAD”代表的不仅仅是游戏的名字,它还象征着对游戏类型的致敬...
《基于Java的游戏源码分析——Dungeon Crawler Game》 在IT行业中,开源项目一直扮演着重要的角色,它们为开发者提供了学习、实践和创新的平台。本次我们将深入探讨一款名为"Dungeon Crawler Game"的游戏源码,这是...
An Epic Low Poly asset pack of characters, props, weapons and environment assets to create a Fantasy themed polygonal style game. Modular sections are easy to piece together in a variety of ...
《Go-Go-Dungeon:Concordia的存储库制作了Game Game Jam》是关于一个游戏项目开发的资源库,这个项目在Concordia的Game Game Jam活动中被创建。在这个活动中,开发者们通常会聚在一起,在有限的时间内进行游戏的...
Get to know techniques and approaches to procedurally generate game content in C++ using Simple and Fast ... Procedural Dungeon Generation Chapter 10. Component-Based Architecture Chapter 11. Epilogue
Make a 2D RPG in a Weekend shows you how to create your very own dungeon crawler game in RPG Maker VX Ace in a single weekend. The entire process, from start to finish, is covered within this book. ...
#Legacy Dungeon Legacy Dungeon是具有随机生成的地图的自上而下的2D地牢爬虫。随着我们从使用Javax.swing库渲染图形到使用Lightweight Java Game Library(LWJGL)的转变,该游戏的开发过程目前仍处于暂停状态。 在...