动态规划——达拉崩吧

简介: 动态规划——达拉崩吧

1、题目链接


174. 地下城游戏



2、题目分析

       假如说我们正向推状态转移方程,很难推出来,因为这道题有“加血”的说法,只能依靠后面的值判断前面所需要的血量,也就是说,如果正向的dp表示从起点出发,到达(i,j)需要最少的血量,那么[i][j+1]也会影响dp[i][j]的值,所以不建议正向dp的做法,

dp[i][j]表示从[i][j]位置到终点的所需要的最低健康值,

假设dp[i][j]所需的最低健康值是x,那么他满足


x+dungeon[i][j]>=dp[i+1][j]或者

x+dungeon[i][j]>=dp[i][j+1]

那么状态转移方程就是 dp[i][j]=min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]

但是当前的位置dungeon[i][j]是一个比较大的正数时,dp[i][j]的值可能会变为0或者负数,但是我们要


求dp[i][j]最小为1,所以我们可以这样写:

dp[i][j] = max(1, dp[i][j])
 

状态转移方程出来了,剩下的就简单了

倒序dp:


3、代码实现

class Solution {
public:
    int calculateMinimumHP(vector<vector<int>>& dungeon) {
        int m = dungeon.size(), n = dungeon[0].size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MAX));
        dp[m][n - 1] = dp[m - 1][n] = 1;
        // dp[i][j]表示从当前位置出发到达终点时所需的最低健康数
        for (int i = m - 1; i >= 0; i--)
            for (int j = n - 1; j >= 0; j--) {
                dp[i][j] = min(dp[i + 1][j], dp[i][j + 1]) - dungeon[i][j];
                dp[i][j] = max(1, dp[i][j]);
            }
        return dp[0][0];
    }
};



注意我们的dp数组,要多开一行和一列,并初始化,方便我们dp[i][j]的计算


 dp[m][n - 1] = dp[m - 1][n] = 1;


在dp表最后⾯添加⼀⾏,并且添加⼀列后,所有的值都先初始化为⽆穷⼤,然后让

dp[m][n - 1] = dp[m - 1][n] = 1即可。

相关文章
|
Linux 容器 Docker
Debian配置系统中文语言及环境
Debian配置系统中文语言及环境
17580 1
|
存储 运维 数据可视化
Jaeger,一个链路追踪神器!
在微服务架构中,一次请求可能经过多个服务节点,带来复杂的调用关系。如何追踪请求全链路、快速定位问题、优化性能,成为开发与运维的关键挑战。链路追踪(Tracing)技术应运而生,而 Jaeger 作为业界主流的开源分布式链路追踪系统,提供了强大的支持。本文将带你全面了解 Jaeger 的核心概念、架构原理、使用方式及实际项目中的落地方法,助你快速掌握链路追踪技术,提升系统的可观测性与稳定性。
1891 2
Jaeger,一个链路追踪神器!
|
9月前
|
弹性计算 网络协议 固态存储
阿里云服务器如何配置IPv6?共4个步骤
阿里云ECS多数实例支持IPv6,仅部分老旧或特殊规格不支持。配置IPv6共四步:先为VPC和交换机开通IPv6,再分配IPv6地址,接着在系统内配置IPv6,最后开通IPv6公网带宽。完成即可实现IPv6私网及公网通信,详细步骤可参考官方指南。
1898 12
|
10月前
|
人工智能 自动驾驶 计算机视觉
CVPR 2024 目标检测!开放词汇
YOLO-World是CVPR 2024提出的一种实时开放词汇目标检测模型,首次将YOLO的高速特性与开放词汇识别能力结合。它无需微调即可通过文本提示检测任意物体,支持零样本推理,兼具高精度与灵活性,适用于机器人、自动驾驶等实时感知场景,标志着目标检测迈向通用化新阶段。
731 0
CVPR 2024 目标检测!开放词汇
|
Linux
Linux命令拓展:为cp和mv添加进度显示
好了,就这样,让你的Linux复制体验充满乐趣吧!记住,每一个冷冰冰的命令背后,都有方法让它变得热情起来。
1565 8
|
存储 SQL 运维
Hologres OLAP场景核心能力介绍-2024实时数仓Hologres线上公开课02
本次分享由Hologres产品经理赵红梅(梅酱)介绍Hologres在OLAP场景中的核心能力。内容涵盖OLAP场景的痛点、Hologres的核心优势及其解决方法,包括实时数仓分析、湖仓一体加速、丰富的索引和查询性能优化等。此外,还介绍了Hologres在兼容PG生态、支持多种BI工具以及高级企业级功能如计算组隔离和serverless computing等方面的优势。最后通过小红书和乐元素两个典型客户案例,展示了Hologres在实际应用中的显著效益,如运维成本降低、查询性能提升及成本节省等。
642 7
|
Shell
自定义 jupyter 魔法命令
自定义 jupyter 魔法命令
497 1
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
739 2
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的无人机视角地面物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测(1)
基于YOLOv8深度学习的无人机视角地面物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
资源调度 JavaScript Shell
6.6k star!推荐一款轻松创建隔离环境的命令行及容器工具!
6.6k star!推荐一款轻松创建隔离环境的命令行及容器工具!
652 0