算法---动态规划练习-6(地下城游戏)

news/2024/4/29 12:45:04/文章来源:https://blog.csdn.net/originalHSL/article/details/137121850

地下城游戏

  • 1. 题目解析
  • 2. 讲解算法原理
  • 3. 编写代码

1. 题目解析

题目地址:点这里

在这里插入图片描述

2. 讲解算法原理

在这里插入图片描述

在这里插入图片描述


  1. 首先,定义一个二维数组 dp,其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。

  2. 初始化数组 dp 的边界条件

  • 对于最后一行,即 dp[m-1][j](其中 m 是行数),表示最后一行的每个位置到达终点时的最低健康点数。由于只能向右移动,所以从最后一行的任意位置出发都必须向右移动到达终点,因此初始化为 1。
  • 对于最后一列,即 dp[i][n-1](其中 n 是列数),表示最后一列的每个位置到达终点时的最低健康点数。由于只能向下移动,所以从最后一列的任意位置出发都必须向下移动到达终点,因此初始化为 1
  1. 初始化除了最后一行和最后一列之外的其他位置 dp[i][j] 的值为正无穷大(INT_MAX),表示无法到达终点。

  2. 从倒数第二行开始,从右往左,从下往上遍历整个地牢。对于每个位置 (i, j),计算到达终点的最低健康点数:

  • 使用状态转移方程 dp[i][j] = min(dp[i][j+1], dp[i+1][j]) - dungeon[i][j],表示选择向右移动和向下移动中所需最低健康点数较小的那个,并减去当前位置的健康点数消耗
  • 对于 dp[i][j] 的值,还需要确保其不会小于 1,因为健康点数不能为负数
  1. 最后,返回 dp[0][0],即起点位置的最低健康点数。

3. 编写代码

class Solution {
public://状态表示:以i位置为起点,到达终点时的最低健康点数(此题以i位置为结尾解不出来!!!)int calculateMinimumHP(vector<vector<int>>& dungeon) {int m=dungeon.size();int n=dungeon[0].size();vector<vector<int>> dp(m+1,vector<int>(n+1));dp[m-1][n]=1,dp[m][n-1]=1;for(int i=0;i<n-1;i++) dp[m][i]=INT_MAX;for(int j=0;j<m-1;j++) dp[j][n]=INT_MAX;for(int i=m-1;i>=0;i--){for(int j=n-1;j>=0;j--){//状态转移方程!!!!dp[i][j]=min(dp[i][j+1],dp[i+1][j])-dungeon[i][j];dp[i][j]=max(1,dp[i][j]);}}return dp[0][0];}
};

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

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

相关文章

后端常问面经之Spring和Mybatis框架

Spring的IOC介绍一下&#xff1a; 所谓控制就是对象的创建、初始化、销毁。 创建对象&#xff1a;原来是 new 一个&#xff0c;现在是由 Spring 容器创建。 初始化对象&#xff1a;原来是对象自己通过构造器或者 setter 方法给依赖的对象赋值&#xff0c;现在是由 Spring 容器…

课堂练习:环境体验——3、Linux 权限管理

任务描述 本关任务&#xff1a;根据所学知识&#xff0c;完成文件权限的修改。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何创建和删除用户以及用户的权限管理&#xff1b;如何设置文件的访问权限。 Linux的权限管理主要分为两类&#xff1a;用户和…

人脸情绪识别(1)附代码

1.目标 实现人脸情绪实时检测&#xff0c;通过摄像头拍摄人脸并显示出相应情感类别。 代码地址&#xff1a; 2.Emotion-Detection-RealTime 2.1 目录结构 2.2 代码结构 模块导入 参数设置 数据处理 模型构建 训练脚本 展示脚本 2.3 具体代码 import numpy as np import arg…

JAVA的NIO和BIO底层原理分析

文章目录 一、操作系统底层IO原理1. 简介2. 操作系统进行IO的流程 二、BIO底层原理1. 什么是Socket2. JDK原生编程的BIO 三、Java原生编程的NIO1. 简介2. NIO和BIO的主要区别3. Reactor模式4. NIO的三大核心组件5. NIO核心源码分析 一、操作系统底层IO原理 1. 简介 IO&#x…

马斯克旗下xAI发布Grok-1.5,相比较开源的Grok-1,各项性能大幅提升,接近GPT-4!

本文原文来自DataLearnerAI官方网站&#xff1a;马斯克旗下xAI发布Grok-1.5&#xff0c;相比较开源的Grok-1&#xff0c;各项性能大幅提升&#xff0c;接近GPT-4&#xff01; | 数据学习者官方网站(Datalearner) 继Grok-1开源之后&#xff0c;xAI宣布了Grok-1.5的内测消息&…

qt学习第三天,qt设计师的第一个简单案例

3月25&#xff0c;应用qt设计师&#xff0c;手动设计界面形状 ​ 如何启动qt设计师&#xff0c;找到对应的安装地点&#xff0c;对应你自己安装的pyside6或其他qt的安装路径来找 ​ 应用qt设计师的优点是不用敲代码然后慢慢调节框框大小&#xff0c;位置等、可以直接修改…

武汉星起航:亚马逊物流创新,塑造未来零售的新篇章

亚马逊&#xff0c;作为全球电商的领军者&#xff0c;不仅在商品销售方面取得了举世瞩目的成就&#xff0c;更在物流领域进行了一系列颠覆性的创新。武汉星起航了解到这些创新不仅提升了消费者的购物体验&#xff0c;也为整个物流行业树立了新的标杆。 亚马逊在物流技术方面的…

201基于matlab的成绩管理系统

基于matlab的成绩管理系统。自带的GUI界面设计了一个成绩管理界面&#xff0c;可进行成绩的载入、查询、绘图、求平均分。可更改自己的数据进行录入。包含作业文档。程序已调通&#xff0c;可直接运行。 201 matlab 成绩管理系统 GUI - 小红书 (xiaohongshu.com)

“数据持久化”和“缓存与数据库不一致”到底有什么区别?

之前&#xff0c;我一直把“数据持久化”和“缓存与数据库不一致问题”给搞混了。我当时复习的时候基本上就没有思考&#xff0c;就是纯背诵&#xff0c;数据持久化是什么&#xff0c;数据持久化有两种方式&#xff0c;这两种方式特点是什么&#xff0c;然后巴拉巴拉一堆。缓存…

k8s入门到实战(三)—— 三台服务器从零开始搭建k8s集群

服务器裸机搭建 k8s 集群 环境准备 至少3个服务器&#xff08;本次使用3台阿里云服务器&#xff09;&#xff0c;4核4G以上&#xff08;按量付费&#xff09;&#xff0c;内网要能互相通信&#xff0c;也就是必须要在同一个网段下 本次实验的3个服务器私网 ip 如下&#xff…

【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)

一、概述 链式前向星是一种用于存储图的数据结构&#xff0c;特别适合于存储稀疏图&#xff0c;它可以有效地存储图的边和节点信息&#xff0c;以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起&#xff0c;通过数组的方式连接&#xff08;类似静态数组实现链表…

海外媒体发稿:10种提升出口贸易媒体发稿推广的方法-华媒舍

出口贸易对于一个国家的经济发展至关重要。而有效的媒体发稿推广是扩大出口贸易的关键。本篇科普介绍文章将为大家介绍10种提升出口贸易媒体发稿推广效果的秘笈。 1. 独特而吸引人的标题 一个独特而吸引人的标题是吸引媒体和读者关注的第一步。确保标题简洁、具有吸引力&#…

实战 | 微调训练TrOCR识别弯曲文本

导 读 本文主要介绍如何通过微调训练TrOCR实现弯曲文本识别。 背景介绍 TrOCR&#xff08;基于 Transformer 的光学字符识别&#xff09;模型是性能最佳的 OCR 模型之一。在我们之前的文章中&#xff0c;我们分析了它们在单行打印和手写文本上的表现。 TrOCR—基于Transforme…

微信小程序实战:无痛集成腾讯地图服务

在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…

Uos中Qt Creator中无法显示qDebug()相关信息

[TOC](Uos中Qt Creator中无法显示qDebug()相关信息) 一、概述 操作系统&#xff1a;统信 UOS 20.1070 在Uos系统中&#xff0c;我在Qt Creator中写了 qDebug()等代码&#xff0c;但是在 应用程序 输出中无法看到对应的调试输出&#xff0c;但是使用的 std::cout 等输出功能无…

查询优化-提升子查询-UNION类型

瀚高数据库 目录 文档用途 详细信息 文档用途 剖析UNION类型子查询提升的条件和过程 详细信息 注&#xff1a;图片较大&#xff0c;可在浏览器新标签页打开。 SQL: SELECT * FROM score sc, LATERAL(SELECT * FROM student WHERE sno 1 UNION ALL SELECT * FROM student…

服务器基础知识(物理服务器云服务器)

今天我们来介绍一下服务器的基础知识 一、服务器硬件基础知识 组件说明中央处理器&#xff08;CPU&#xff09;CPU是服务器的大脑&#xff0c;负责执行计算任务和指令。服务器通常配备多个CPU核心&#xff0c;以支持并行处理和提高性能。关键的CPU性能指标包括时钟频率、核心数…

DDos系列攻击原理与防御原理

七层防御体系 静态过滤 命中黑名单 对确定是攻击的流量直接加入黑名单&#xff08;源地址命中黑名单直接丢弃&#xff0c;缺乏机动性和扩展性&#xff09; 畸形报文过滤 畸形报文攻击 TCP包含多个标记位&#xff0c;排列组合有规律 • 现象&#xff1a;TCP标记位全为1 …

快速熟悉ElasticSearch的基本概念

1.全文检索 全文检索是通过文本内容进行全面搜索的技术。通过全文检索可以快速地在大量文本数据中查找包含特定关键词或者短语的文档&#xff0c;并且返回相关的搜索结果。 检索和查询的区别 检索没有搜索条件边界&#xff0c;检索的结果取决于相关性&#xff0c;相关性计算…

命令模式(请求与具体实现解耦)

目录 前言 UML plantuml 类图 实战代码 模板 Command Invoker Receiver Client 前言 命令模式解耦了命令请求者&#xff08;Invoker&#xff09;和命令执行者&#xff08;receiver&#xff09;&#xff0c;使得 Invoker 不再直接引用 receiver&#xff0c;而是依赖于…