LeetCode 174. 地下城游戏(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

一些坏人抓住了公主(P)并将她关在了地下城的右下角。
地下城是由 M x N 个房间组成的二维网格。
我们英勇的骑士(K)最初被安置在左上角的房间里,
他必须穿过地下城并通过对抗坏人来拯救公主。

骑士的初始健康点数为一个正整数。
如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。

有些房间由坏人守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);
其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加健康点数)。

为了尽快到达公主,骑士决定每次只向右或向下移动一步。

编写一个函数来计算确保骑士能够拯救到公主所需的最低初始健康点数

例如,考虑到如下布局的地下城,如果骑士遵循最佳路径 
右 ->->-> 下,则骑士的初始健康点数至少为 7-2 (K)	-3	  3
-5	   -10	  1
10	    30	 -5 (P)
说明:
骑士的健康点数没有上限。任何房间都可能对骑士的健康点数造成威胁,
也可能增加骑士的健康点数,
包括骑士进入的左上角房间以及公主被监禁的右下角房间。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/dungeon-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 参考官方的解题
  • 正向不好计算最低的初始生命值,反向考虑
  • dp[i][j]表示走到 坐标处的所需的最低生命值
class Solution {
public:int calculateMinimumHP(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size(), i, j, minlife;vector<vector<int>> dp(m+1,vector<int>(n+1, INT_MAX));dp[m][n-1] = dp[m-1][n] = 1;//处理边界更方便for(i = m-1; i >= 0; --i){for(j = n-1; j >= 0; --j){minlife = min(dp[i+1][j], dp[i][j+1]);//使用较小的dp[i][j] = max(minlife-grid[i][j], 1);//在 i,j,处你的生命值至少需要为1}}return dp[0][0];}
};

在这里插入图片描述
12 ms 8.9 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机考研英语什么时候考试,计算机考研:早期复习三大注意事项

新的一年已经开始&#xff0c;这个时间对于很多考研的考生来说&#xff0c;都还是最初的准备阶段&#xff0c;而对于即将参加考研的考生来说&#xff0c;这个时期开始复习还是有些早&#xff0c;不过想要复习得更为充分&#xff0c;现在就已经可以开始了&#xff0c;今天沪江的…

Windows注册表操作基础代码

Windows注册表操作基础代码Windows下对注册表进行操作使用的一段基础代码Reg.h: #pragma once#include<assert.h>#include<windows.h>class Reg{HKEY hkey;public:void open(HKEY root,char*subKey);//打开注册表键&#xff0c;不存在则创建void del(HKEY root,cha…

[Hands On ML] 4. 训练模型

文章目录1. 线性回归1.1 正规方程求解1.2 时间复杂度1.3 梯度下降1.4 批量梯度下降1.5 随机梯度下降1.6 小批量梯度下降2. 多项式回归3. 线性模型正则化4. 早期停止法&#xff08;Early Stopping&#xff09;本文为《机器学习实战&#xff1a;基于Scikit-Learn和TensorFlow》的…

非常经典的C字符串函数的实现

1. strlen(),计算字符串长度 1 int strlen(const char string) 2 3 { 4 5 int i0; 6 7 while(string[i]) i; 8 9 return i; 10 11 } 2. strcpy(), 字符串拷贝. 1 char *strcpy(char *destination, const char *source) 2 3 { 4 5 while…

LeetCode 895. 最大频率栈(哈希+按频数存储)

文章目录1. 题目2. 解题1. 题目 实现 FreqStack&#xff0c;模拟类似栈的数据结构的操作的一个类。 FreqStack 有两个函数&#xff1a; push(int x)&#xff0c;将整数 x 推入栈中。pop()&#xff0c;它移除并返回栈中出现最频繁的元素。 如果最频繁的元素不只一个&#xff…

七年级上册计算机重点知识点,初一上册数学重点知识点

为了方便大家更好的学习和复习初一上册数学课本内容&#xff0c;现将初一上册数学重要内容整理分享出来。有理数重点知识点(1)定义&#xff1a;由整数和分数组成的数。包括&#xff1a;正整数、0、负整数&#xff0c;正分数、负分数。可以写成两个整之比的形式。(2)数轴&#x…

友元关系

友元关系转载于:https://www.cnblogs.com/LoveFishC/archive/2012/08/01/3846663.html

猪八戒背媳妇用计算机弹出来,猪八戒背媳妇?杭城游泳馆爆笑一幕:浙大学霸果然机智!...

游泳有时候不光比速度&#xff0c;还得比机智。6月19日&#xff0c;2021年“三好杯”游泳比赛在浙大紫金港校区游泳馆举行。这场比赛浙大各院系(学院)共有23支代表队、近220名运动员参赛。游泳项目是浙大的招牌项目之一&#xff0c;前不久的全国大学生阳光组(普通生)游泳比赛中…

html5支持多线程,html5 多线程

html5 多线程版本&#xff1a;HTML5运行者 Worker 接口是Web Workers API 的一部分&#xff0c;代表一个后台任务&#xff0c;它容易被创建并向创建者发回消息。创建一个运行者只要简单的调用Worker()构造函数&#xff0c;指定一个脚本&#xff0c;在工作线程中执行。运行者能够…

magento tab(easy tables)标签应用

我介绍的主要是magento 1.7.0.2版本。 因为彼人刚接触magento一星期&#xff0c;了解有限&#xff0c;理解有误的地方 还请多多包含。 easy tables 在1.7.0.2版本中&#xff0c;默认是在app/design/frontend/default/modern/layout/template/catalog.xml; 让我们先找到这个文件…

LeetCode 269. 火星词典(拓扑排序)

文章目录1. 题目2. 解题1. 题目 现有一种使用字母的全新语言&#xff0c;这门语言的字母顺序与英语顺序不同。 假设&#xff0c;您并不知道其中字母之间的先后顺序。 但是&#xff0c;会收到词典中获得一个 不为空的 单词列表。 因为是从词典中获得的&#xff0c;所以该单词列…

南工大计算机学院,江南-欢迎访问湖北工业大学计算机学院官方网站

科研情况介绍(研究方向、研究课题、现正进行的科研项目)研究方向&#xff1a;计算机软件与理论。近3年来主要个人成果、参加学术团体及社会兼职情况&#xff1a;1、机械化定理证明研究综述.第一作者.软件学报. 20192、mJava到Micro-Dalvik虚拟机的编译验证.第一作者.电子学报20…

邻接表的两种实现(链表和数组模拟)

struct node {int v; //边的结束顶点 int w; //边的长度node* next; //指向以同一起点的下一条边的指针 }*first[N]; //first[u]指向以u为起始点的第一条边 void init() {memset(first,NULL,sizeof(first)); } void add(int u, int v, int w)//添加边 {node* p new node;p->…

LeetCode 301. 删除无效的括号(回溯)

文章目录1. 题目2. 解题1. 题目 删除最小数量的无效括号&#xff0c;使得输入的字符串有效&#xff0c;返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。 示例 1: 输入: "()())()" 输出: ["()()()", "(())()"]示例 2: 输入:…

计算机程序专利实用新型,涉及计算机程序的实用新型专利保护的思考

随着信息技术的不断发展&#xff0c;与计算机程序相关的计算机技术以及通信技术渗透到各个领域&#xff0c;越来越多的专利涉及了与计算机程序相关的技术。那么&#xff0c;是否包含计算机程序的相关专利申请都不能被授予实用新型专利权呢&#xff1f;本文从一件复审案例出发&a…

javascript数组去重方法性能测试比较

昨天参加的一个前端面试&#xff0c;其中有一题数组去重&#xff0c;首先想到的是对象存键值的方法&#xff0c;代码如下 方法一&#xff1a;&#xff08;简单存键值&#xff09; Array.prototype.distinct1 function() {var i0,tmp{},thatthis.slice(0)this.length0;for(;i&l…

LeetCode 428. 序列化和反序列化 N 叉树(DFS)

文章目录1. 题目2. 解题1. 题目 序列化是指将一个数据结构转化为位序列的过程&#xff0c;因此可以将其存储在文件中或内存缓冲区中&#xff0c;以便稍后在相同或不同的计算机环境中恢复结构。 设计一个序列化和反序列化 N 叉树的算法。 一个 N 叉树是指每个节点都有不超过 N…

计算机进入休眠状态后,Win7电脑进入休眠状态后又自动重启该怎么处理

在使用win7系统的时候&#xff0c;有的小伙伴遇到了一个莫名其妙的问题&#xff1a;当电脑进入休眠状态后却突然自动重启了&#xff0c;那么这是怎么一回事呢&#xff1f;又该如何解决呢&#xff1f;别着急&#xff0c;接下来&#xff0c;小编就给大家分享一下Win7电脑进入休眠…

Syslistview32+Systreeview32系统操作动态链接库和实际的商业化

Syslistview32和Systreeview32 是两个极其常用的系统控件&#xff0c;一个是列表控件&#xff0c;一个是树形框&#xff0c;只要能随意操控这两个控件就能够从外部控制住大多应用到这两个控件的软件。 一开始是想要控制VS平台的列表框来操作自动进房间&#xff0c;但是苦于没有…

LeetCode 325. 和等于 k 的最长子数组长度(哈希表记录第一次出现的状态)

文章目录1. 题目2. 解题1. 题目 给定一个数组 nums 和一个目标值 k&#xff0c;找到和等于 k 的最长子数组长度。 如果不存在任意一个符合要求的子数组&#xff0c;则返回 0。 注意: nums 数组的总和是一定在 32 位有符号整数范围之内的。 示例 1: 输入: nums [1, -1, 5, -…