174. Dungeon Game Leetcode Python

174地下城游戏——力扣算法系列2020.07.12 Python 第18天 2020.07.12 周日 难度系数:困难 题目:174地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要 阅读详情

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)

  • 这道题是二维动态规划问题,关键在于构造转移方程。 首先要求每一步移动过程中knight的hp要大于0,其次要求最小。
  • 所以我们可以构造一个MxN 的矩阵DP,用来记录移动过程。其转移方程为 dp[row][col]=max(1,min(dp[row+1][col],dp[row][col+1])-dungeon[row][col])  空间复杂度和时间复杂度都为 O(mn).这题和前面的求path的两题很类似。
  • This is a 2D dynamic planning problem, we need to make HP greater than 0 in every step. And we greedy search from the bottom.
  • The time and space complexity in this problem are both O(mn)
  • The code is as blow
    class Solution:
        # @param dungeon, a list of lists of integers
        # @return a integer
        def calculateMinimumHP(self, dungeon):
            m=len(dungeon)
            n=len(dungeon[0])
            dp=[[0 for index in range(n)] for index in range(m)]
            dp[m-1][n-1]=max(1,1-dungeon[m-1][n-1])
            for row in reversed(range(m-1)):
                dp[row][n-1]=max(1,dp[row+1][n-1]-dungeon[row][n-1])
            for col in reversed(range(n-1)):
                dp[m-1][col]=max(1,dp[m-1][col+1]-dungeon[m-1][col])
            for row in reversed(range(m-1)):
                for col in reversed(range(n-1)):
                    dp[row][col]=max(1,min(dp[row+1][col],dp[row][col+1])-dungeon[row][col])
            return dp[0][0]

Windows 10 本地硬盘变成了可弹出磁盘 今天新装了系统, 电脑是一个SSD+HHD, 没想到装好之后右下角显示可安全删除设备, 两个硬盘在那里. 这还得了. 查了一下午, 大致知道了是什么问题. Standard SATA AHCI controller使用高性能的硬盘模式就会把硬盘看作是一个可热插拔的存储器, 所以自然就会显示可弹出. 如果你的BIOS支持关闭HotSwap或者HotPlug, 那么直接关闭就可以了. 或者你直接在BIOS里把磁盘模式改为IDE, 不过这样就发挥不好你SSD的高性能了. 还有一种解决方法, 就是手动让系统把这两个 阅读详情

相关推荐

CSP-J/S复赛文件组织与freopen读写全攻略,避免爆零

在信息学竞赛的上机考试中,代码能力固然重要,但文件组织与输入输出重定向往往是决定成败的关键细节。许多选手习惯在线评测环境,对本地文件命名、目录层级和读写方式缺乏系统认知,导致算法正确却因文件名拼写错误或freopen使用不当而遗憾失分。理解评测系统的工作原理,掌握从建立准考证号目录到规范命名源文件,再到使用freopen进行文件流重定向的标准流程,是每位参赛者的必备技能。这种工程化习惯不仅适用于CSP-J/S复赛,也是未来参加NOI等更高水平竞赛的基础。本文从文件组织的底层逻辑出发,结合实战案例,系统讲解考

weixin_32466193的博客 592

Python | Leetcode Python题解之第174题地下城游戏

Python | Leetcode Python题解之第174题地下城游戏

Mopes__的博客 465

ZYQN7000系列VxWorks驱动开发:VxWorks系统移植

文章目录ZYQN7000驱动开发:VxWorks系统移植1.硬件环境2.编译vsb和vip工程2.1修改设备树文件2.2添加调试打印组件3.选择uboot来启动VxWorks内核4.尝试在开发板上启动内核4.1 拷贝镜像和设备树至SD卡4.2开发板上电4.2.1 uboot成功启动4.2.2 启动VxWorks5.添加shell和cmd组件 ZYQN7000驱动开发:VxWorks系统移植 1.硬件环境 正点原子领航者开发板 2.编译vsb和vip工程 vsb和vip工程的编译过程可以参考之前的文章,htt

明故宫的记忆 5504

【LeetCode】174. Dungeon Game 解题报告(Python & C++)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法动态规划日期 题目地址:https://leetcode.com/problems/dungeon-game/ 题目描述 The demons had captured the princess § and imprisoned her in the bot...

负雪明烛 1772

逆向工程的艺术:如何绕过PDD的长连接机制实现高效抓包

本文深入解析了如何通过逆向工程技术绕过拼多多(PDD)的长连接机制实现高效抓包。详细介绍了动态调试方案、关键函数Hook技巧及流量解密重组方法,帮助开发者在非Root环境下捕获并解析PDD的加密数据。结合Python工具链,实现稳定数据采集,适用于电商数据分析和反爬策略研究。

weixin_29058331的博客 674

别再手动折腾了!PICO Unity SDK 一键配置开发环境保姆级教程(含PDC串流调试)

本文详细介绍了PICO Unity SDK的一键配置功能,帮助开发者快速搭建VR开发环境。通过自动化配置流程,大幅减少手动设置时间,提升开发效率。文章还涵盖了PDC串流调试技巧和常见问题解决方案,是PICO VR开发的实用指南。

weixin_30335575的博客 448

LeetCode:174. Dungeon Game - Python

问题描述: 174. 地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数...

Growth Diary 1000

ZYNQ开发(2)在Linux系统层上PL-PS通过AXI-DMA传输数据详细步骤及注意事项

参考的网络资料 https://github.com/bperez77/xilinx_axidma/tree/master https://gitlab.gnome.org/HosseinBeheshti/UlteraZed7EV/-/tree/master/petalinux/xilinx_axidma https://www.icode9.com/content-3-925319.html https://blog.csdn.net/weixin_38218267/article/details/1

aizaiyueye的专栏 3448

[Leetcode]174. Dungeon Game @python

题目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 po

qian2729的专栏 766

中科蓝讯蓝牙开发:从源码到固件的自动化构建链路解析

本文详细解析了中科蓝讯AB530X蓝牙芯片从源码到最终固件的完整自动化构建链路。通过剖析prebuild.bat、GCC编译、postbuild.bat等关键环节,阐述了资源打包、配置生成、代码编译与固件合成的全过程,并重点介绍了如何实现一键编译与自动下载,为开发者高效进行嵌入式蓝牙开发提供清晰指南。

weixin_29193259的博客 121

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2644

LeetCode 174.地下城游戏

LeetCode 174.地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负...

缇欧的咪西 759

在VINS-FUSION上处理KITTI数据集(双目+GPS)

VINS-Fusion 是一个开源的实时多传感器状态估计库,主要由香港科技大学的沈邵劼教授领导的研究团队开发。它是 VINS-Mono(单目视觉惯性系统)的扩展,支持多种传感器组合,如双目、立体相机和IMU。

如果想成为中心,那么就到中心去吧。 1205

【python/Hard/174/leetcode】Dungeon Game

动态规划解决地牢游戏

alicelmx的博客 284

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LeetCode - 解题笔记 - 174 - Dungeon Game

【官方题解参考】正眼一看就会知道是动态规划,但是实际考虑的时候会发现一个问题:从左上到右下的方向的规划计算无法在后续确认的情况下完全确认。最优路径会随着后续的结果的选择而不断发生变化,无后效性不成立。反过来看,实际上本体就是在求取初始值。因此如果将规划方向从左上变成右下,整个逻辑就通了……最优子结构:dp[i][j]dp[i][j]dp[i][j],从终点(右下)到达当前点所需要的最小能量值初始值:dp[m−1][n−1]=max⁡(1,1−dungeon[m−1][n−1])dp[m-1][n-1] =

支锦铭的博客 339

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

174. 地下城游戏(Dungeon Game)

174. 地下城游戏(Dungeon Game)题解动态规划复杂度分析PythonJava(待完成) 题解 动态规划 dp[i][j]dp[i][j]dp[i][j]表示到达房间dungeon[i][j]dungeon[i][j]dungeon[i][j]所需的最小生命值。 若从左上角递推到右下角(自顶向下),当前位置的最小生命值和当前位置尚存的生命值对后续结果会产生很大影响,故放弃这个思路,选...

朱师傅的博客 454

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

174.Dungeon Game - LeetCode

bolyus的博客 196

Leetcode 174. Dungeon Game (Hard) (cpp)

Leetcode 174. Dungeon Game (Hard) (cpp)

还是需要多学习!闷声大发财,这是坠吼的! 563

LeetCode174—Dungeon Game

LeetCode174 Dungeon Game

上善若水 582

leetcode-174. Dungeon Game 地下城游戏

一道关于骑士救公主故事的题目。 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负...

yocichen 211

LeetCode 174. Dungeon Game

LeetCode 174 这个题目使用动态规划,从数组右下角开始向左上角解决会比较容易。 使用一个二位数组来记录在每个位置上需要的生命值,最小是1(如果是0,那么就挂了)。为了方便处理,我们多给这个二维数组加一条边(m+1 * n+1)。在找到公主之后剩下的生命值最小是1. 每次我们可以从左边过来,或者上边过来,反过来算的时候,那么即使从右边或者下边过来小的这个,min(dp【i+1】【j】, dp【i】【j+1】),这些是他们需要进入下一个的生命值,对于当前的伤害或者加强,也是需要减掉的,所以这个min(

frankguodongchen的博客 177

leetcode-174. Dungeon Game

class Solution { public: int calculateMinimumHP(vector<vector<int>>& dungeon){ //正着看的话,只有局部最优,没有全局最优,类似于贪心 //应该倒着动态规划 int m = dungeon.size(); int n ...

Carol 211

[LeetCode]problem 174. Dungeon Game

TAG动态规划link方法标准DP问题,没有太大思考难度。不过还是在纸上画了一会了,写出了需要满足的条件,结果觉得还是直接直观理解更加简单。明显需要倒推。首先是最后一个格子。到达这个格子之前,K至少有1点HP,设当前地牢值为d,若当前地牢如果为战斗(d为负),设则为了保证战斗后剩余1,则至少需要的HP为d+1;如果为补药(d大于0),则只要需要HP为1。接着是处理两边的边界,边界是任意情况的特例,故

readonlyfile 501

[LeetCode] 174. Dungeon Game 地牢游戏

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 pos...

weixin_30276935的博客 109

Leetcode174 地下城游戏 C++,Java,Python

Leetcode174 地下城游戏 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/dungeon-game/submissions/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的...

Rp的博客 386

10.3.3 (python) 动态规划数组类LeetCode题目 —— Dungeon Game & Frog Jump

来看两道 hard 级别的题目,其子问题性质很明显,就是动态规划,难点就是我们可能找不好子问题的关系式。 174.Dungeon Game The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M ...

xutiantian1412的博客 364
上一篇: Employees Earning More Than Their Managers Leetcode SQL
下一篇: Valid Sudoku Leetcode Python
hyperbolechi
博客等级 码龄12年 7粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值