当前位置: 首页 > news >正文

动态规划 —— 路径问题-地下城游戏

1. 地下城游戏

题目链接:

174. 地下城游戏 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/dungeon-game/description/

 


2.  算法原理 

状态表示:以莫一个位置位置为结尾或者以莫一个位置为起点

   

dp[i,j]表示:到达[i,j]位置的时候,骑士所需要的最低初始健康点数(X),这个状态表示是错误的,因为如果是以莫一个位置为结尾来推导的话我们会发现我们正向推导的时候是不断的修改我们之前的状态,无法得到一个准确的状态

  

所以本题应该以莫一个位置为起点来开始推断:从[i,j]位置出发,到达终点,dp[i,j]里面存储的值就是所需的最低初始健康点数

2. 状态转移方程

  

根据最近的一步来划分问题:

   

到达dp[i][j]有两种情况:

                                        1. 往右边走:dp[i,j+1] - d[i][j]

        

                                        2. 往下走:dp[i+1,j] - d[i][j]
    

    

本题的状态转移方程是:dp[i][j] = min(dp[i,j+1]  ,dp[i+1,j]) - d[i][j]

    

因为最低健康点数还有可能为负数,那么我们还需要对它进行一次比对:

   

                                dp[i][j] =max(1,dp[i][j] )        如果为负数则返回1,否则不变

3. 初始化 :把dp表填满不越界,让后面的填表可以顺利进行

    

本题状态依赖的是下面和右边的状态,所以会越界的位置是下面的一行和右边的一列,那么我们可以在下面的一行和右边的一列再额外的加上一行和一列的虚拟节点

   

因为是在下面的一行和右边的一列加上了虚拟节点,所以不用考虑下标的映射关系,只需要保证后面的填表是正确的

    

当解救完公主之后走到下面或者右边的时候,最少要剩下1滴健康点数,其余虚拟节点的值是取最小的值,为了防止影响到最终结果,所以我们将其初始化为正无穷大

   

4. 填表顺序 

    

本题的填表顺序是:从下往上填写每一行,每一行的值是从右往左

5. 返回值 :题目要求 + 状态表示 

    

本题的返回值是:dp[0][0]


3.代码  

动态规划的固定四步骤:1.  创建一个dp表

                                        2. 在填表之前初始化

                                        3. 填表(填表方法:状态转移方程)

                                        4. 确定返回值 

class Solution {
public:int calculateMinimumHP(vector<vector<int>>& d) {int m=d.size(),n=d[0].size();//创建dp表随便将虚拟节点全部初始化为正无穷大vector<vector<int>>dp(m+1,vector<int>(n+1,INT_MAX));//再将dp[m][n-1]和dp[m-1][n]初始化为1dp[m][n-1]=dp[m-1][n]=1;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])-d[i][j];dp[i][j]=max(1,dp[i][j]);}return dp[0][0];}
};


感谢观看~ 

相关文章:

动态规划 —— 路径问题-地下城游戏

1. 地下城游戏 题目链接&#xff1a; 174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/dungeon-game/description/ 2. 算法原理 状态表示&#xff1a;以莫一个位置位置为结尾或者以莫一个位置为起点 dp[i&#xff0c;j]表示&#xff1a…...

沈阳乐晟睿浩科技有限公司抖音小店短视频时代的电商蓝海

在数字化浪潮席卷全球的今天&#xff0c;电子商务以其独特的魅力和无限的潜力&#xff0c;成为了推动经济发展的新引擎。作为这一领域的佼佼者&#xff0c;沈阳乐晟睿浩科技有限公司凭借其深厚的行业积淀与创新精神&#xff0c;正逐步成为众多商家在抖音小店平台上腾飞的强大助…...

ubuntu20.04安装ros与rosdep

目录 前置配置 配置apt清华源 配置ros软件源 添加ros安装源&#xff08;中科大软件源&#xff09; 设置秘钥 更新源 ros安装 安装ros 初始化 rosdep 更新 rosdep 设置环境变量 安装 rosinstall 安装验证 启动海龟仿真器 操控海龟仿真器 rosdep安装更新 安装 使用…...

推理加速papers

《A Survey on Efficient Inference for Large Language Models》2024-07 1. Q、K、V的计算&#xff0c;都是矩阵乘法&#xff1b; 2. prefilling阶段&#xff0c;每次计算&#xff0c;Q是N个向量一起&#xff1b;decoding阶段&#xff0c;每次计算&#xff0c;Q是1个向量计算&…...

【02基础】- RabbitMQ基础

目录 2- RabbitMQ2-1 介绍和安装安装 2-2 RabbitMQ 快速入门2-3 RabbitMQ 数据隔离 3- Java客户端3-1 快速入门AMQP快速入门&#x1f4d1;小结&#xff1a;SpringAMQP如何收发消息&#xff1f; 3-2 WorkQueues 任务模型案例-使用 WorkQueue 单队列绑定多消费者&#x1f4d1;小结…...

vue3中跨层传递provide、inject

前置说明 在 Vue 3 中&#xff0c;provide 和 inject 是一对用于跨组件树传递数据的 API。它们允许你在祖先组件中使用 provide 提供数据或服务&#xff0c;然后在后代组件中使用 inject 来获取这些数据或服务。这种方式特别适用于跨多个层级的组件传递数据&#xff0c;而不需要…...

Nacos-1.4.6升级2.3.2

一、nacos-2.3.2部署(非升级测试步骤) 1、使用nginx进行代理 # nginx-1.25.5 docker run -d --name nginx-nacos --network nacos --privilegedtrue -v /data/nacos/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:latest2、创建nacos服务 # nacos-2.3.2 do…...

东识集中文印管理系统|DW-S408系统的主要功能

集中文印管理系统以涉密文件集中管理为目标&#xff0c;实现办公文件汇总、打印信息生成、文件打印、文件追溯等功能&#xff0c;将用户与打印设备分离&#xff0c;有效防止纸媒泄密。 集中文印管理系统是由客户端和服务端两部分构成&#xff0c;客户端能够将打印文件上传至服…...

text-foreground讲解

1、fore单词讲解 fore 是 “forward” 或 “front” 的简写&#xff0c;意思是"前面的"、“前景的”。 一些常见的相关英文词&#xff1a; foreground fore ground&#xff0c;意思是"前景" background back ground&#xff0c;意思是"背景&qu…...

数字IC后端实现之Innovus Place跑完density爆涨案例分析

下图所示为咱们社区a7core后端训练营学员的floorplan。 数字IC后端实现 | Innovus各个阶段常用命令汇总 该学员跑placement前density是59.467%&#xff0c;但跑完place后density飙升到87.68%。 仔细查看place过程中的log就可以发现Density一路飙升&#xff01; 数字IC后端物…...

【牛客刷题实战】二叉树遍历

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 牛客题目&#xff1a; 二叉树遍历 题目描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&…...

消息队列mq有哪些缺点?

大家好&#xff0c;我是锋哥。今天分享关于【消息队列mq有哪些缺点&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 消息队列mq有哪些缺点&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 消息队列&#xff08;MQ&#xff09;的缺点 消…...

【CENet】多模态情感分析的跨模态增强网络

在MSA领域&#xff0c;文本的准确度远远高于音频和视觉&#xff0c;如果文本能达到90%&#xff0c;那么音频和视觉的准确度只有60%~80%&#xff0c;但是过往研究很少针对情感分析的背景下去提高音频和视频的准确度。 abstract&#xff1a; 多模态情感分析&#xff08;MSA&…...

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时&#xff0c;一般的做法是先找服务提供方要接口&#xff0c;通过 Maven把接口依赖到项目中。在编写业务逻辑的时候&#xff0c;如果要调用提供方的接口&#xff0c;只需要通过依赖注入的方式把接口注入到项目中&#xff0c;然后在代码里面直接调用接口…...

HTTP 405 Method Not Allowed:解析与解决

HTTP 405 Method Not Allowed&#xff1a;解析与解决 引言 在Web开发中&#xff0c;HTTP状态码是服务器与客户端之间通信的重要组成部分。当我们使用Python进行网络请求时&#xff0c;经常会遇到各种HTTP状态码。其中&#xff0c;HTTP 405 “Method Not Allowed” 错误是一个…...

推荐一款CAD/CAM设计辅助工具:Mastercam

Mastercam是一款非常好用的软件&#xff0c;我们的这款软件是由美国CNC软件公司开发&#xff0c;集平面制图、三维设计、曲面设计、数 控编程、刀具处理等多项强大功能于一体。软件的使用过程具有非常直观的特点&#xff0c;用户可以很方便地对自己的作品进行设计。 Mastercam不…...

位运算刷题记录

1. 使两个整数相等的位更改次数 3226. 使两个整数相等的位更改次数 给你两个正整数 n 和 k。 你可以选择 n 的 二进制表示 中任意一个值为 1 的位&#xff0c;并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现&#xff0c;返回 -1。 class Solution {pub…...

爬虫技术——小白入狱案例

知孤云出岫 目录 1. 案例概述2. 案例需求分析3. 实现步骤Step 1: 环境准备Step 2: 分析百度图片URL请求规律Step 3: 编写爬虫代码代码解析 4. 运行代码5. 注意事项6. 案例总结 要实现大批量爬取百度图片&#xff0c;可以使用Python编写一个网络爬虫&#xff0c;通过发送HTTP请求…...

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …...

全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验

在.NET 2025.1版本中&#xff0c;我们带来了巨大的期待功能&#xff0c;进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等&#xff0c;大幅提升用户体验。 FastReport .NET 是…...

GPT-4V食物识别实测:准确率真能到87.5%?我们复现了那篇论文的实验

GPT-4V食物识别技术深度测评&#xff1a;从实验室数据到真实场景的挑战 当一张摆盘精致的牛排照片被上传到GPT-4V界面&#xff0c;三秒后系统不仅识别出"肋眼牛排"&#xff0c;还精确标注出"约350克"和"780千卡"时&#xff0c;这种看似科幻的场景…...

微信好友关系检测工具完整指南:如何快速发现谁删除了你

微信好友关系检测工具完整指南&#xff1a;如何快速发现谁删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

理解“变异”的奥秘——集中趋势与变异性度量详解

如果说统计学是在“用数据讲故事”&#xff0c;那么集中趋势回答的是&#xff1a;“这个故事大概讲到了哪里&#xff1f;”而变异性回答的是&#xff1a;“这个故事有多分散、多不稳定、多不一样&#xff1f;”很多初学者学统计时&#xff0c;最先记住的是“平均数”“中位数”…...

4步让旧款Mac焕发新生:OpenCore Legacy Patcher完全指南

4步让旧款Mac焕发新生&#xff1a;OpenCore Legacy Patcher完全指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方放弃支持的旧款Ma…...

在Node.js后端服务中集成Taotoken调用多模型AI功能的指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js后端服务中集成Taotoken调用多模型AI功能的指南 对于Node.js开发者而言&#xff0c;在后端服务中集成AI能力正变得日益普…...

如何将B站缓存视频永久保存?m4s-converter完整使用指南

如何将B站缓存视频永久保存&#xff1f;m4s-converter完整使用指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是不是也遇到过这样的情况&…...

无王无帝定乾坤,来自田间第一人 凰标为律正人心

无王无帝定乾坤&#xff0c;来自田间第一人。 世间最大的乱象&#xff0c;从来不止山河动荡、世道纷争&#xff0c;更是人心失序、良知蒙尘。一、旧世千年&#xff1a;王权为纲&#xff0c;律法为束旧制之弊具体表现规则来源由权贵制定&#xff0c;标准随权势偏移治理逻辑重压制…...

MoneyPrinterPlus智能视频创作工具实战指南:从零到批量生产的完整流程

MoneyPrinterPlus智能视频创作工具实战指南&#xff1a;从零到批量生产的完整流程 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhispe…...

从机翼到飞行:空气动力学核心概念与应用解析

1. 翼型&#xff1a;飞机飞行的秘密藏在形状里 第一次看到飞机机翼横截面时&#xff0c;我盯着那个水滴状的形状看了足足十分钟。这个被称为翼型的二维轮廓&#xff0c;藏着人类百年航空史最精妙的设计智慧。就像鱼类的流线型身体决定了游泳效率&#xff0c;翼型的每个曲线转折…...

ARM迷你PC硬核体验:RK3588玩转游戏、影音与家庭服务器

1. 项目概述&#xff1a;当ARM迷你PC遇上硬核游戏最近几年&#xff0c;迷你PC市场可以说是百花齐放&#xff0c;从主打办公的英特尔NUC&#xff0c;到各种基于AMD平台的准系统&#xff0c;选择非常多。但不知道你有没有注意到&#xff0c;一股新的力量正在悄然崛起——那就是基…...