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

DP学习第五篇之礼物的最大价值

DP学习第五篇之礼物的最大价值

剑指 Offer 47. 礼物的最大价值 - 力扣(LeetCode)

在这里插入图片描述

一.题目解析

在这里插入图片描述

二. 算法原理

  1. 状态表示

    tips: 经验+题目要求。以[i,j]位置为结尾,。。。

dp[i][j]: 到达[i, j]位置时,此时的最大礼物价值

  1. 状态转移方程

    tips: 用之前或之后的状态,推导出dp[i]的值。根据最近的一步,来划分问题

到达[i, j]位置之前:

  • 从[i - 1, j]位置向下走一步,到[i, j]

  • 从[i, j - 1]位置向右走一步,到[i, j]

    即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + g[i][j]

  1. 初始化

    tips: 保证填表的时候不越界。增加虚拟节点
在这里插入图片描述

  • 虚拟节点里面的值,要保证后面填表是正确的

以起始位置为结尾,则要保证:第一个位置dp[1][1] = g[1][1]。此时初始化时可以选择将虚拟节点的值都设置为0,保证后续填表的正确性

  • 下标的映射关系

dp表映射到原矩阵:横纵坐标-1

  1. 填表顺序

从上往下填写每一行,每一行从左往右

  1. 返回值

题目要求:到达右下角的礼物价值

即:return dp[m][n]

三. 编写代码

class Solution {
public:int maxValue(vector<vector<int>>& g) {//1.创建dp表//2.初始化//3.填表//4.返回值int m = g.size(), n = g[0].size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));for(int i = 1; i <= m; ++i)for(int j = 1; j <= n; ++j)dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + g[i - 1][j - 1];return dp[m][n];}
};

    🦀🦀观看~~

http://www.lryc.cn/news/105499.html

相关文章:

  • cURL error 1: Protocol “https“ not supported or disabled in libcurl
  • XCode升级后QT无法编译的问题
  • springboot编写mp4视频播放接口
  • 华为OD机试真题 JavaScript 实现【机器人活动区域】【2023Q1 200分】,附详细解题思路
  • C++中的静态分配和动态分配
  • 【Android常见问题(五)】- Flutter项目性能优化
  • JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)
  • Java单例模式几种代码详解
  • PHP代码审计--理论
  • 在云服务器上,clone github时报Connection timed outexit code: 128
  • 小型双轮差速底盘寻迹功能的实现
  • 第七篇:k8s集群使用helm3安装Prometheus Operator
  • Chrome 75不支持保存成mhtml的解决方法
  • 工程监测振弦采集仪应用于岩土工程监测案例
  • 配置HDFS单机版,打造数据存储的强大解决方案
  • U盘删除的文件怎么找回?4个简单方法分享!
  • 【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序2
  • 形参动态内存开辟和柔性数组
  • 【LLM系列之指令微调】长话短说大模型指令微调的“Prompt”
  • MacOS使用brew如何下载Nginx
  • linux ftp
  • 你知道HTTP与HTTPS有什么区别吗?
  • keil使用printf函数重定串口输出,程序卡在Reset_Handler
  • Redis预热 雪崩 击穿 穿透
  • Shell脚本学习-MySQL单实例和多实例启动脚本
  • vue3搭建(vite+create-vue)
  • 服务器中了360后缀勒索病毒怎么解决,360后缀勒索病毒解密数据恢复
  • 3000字详解:风控核心岗位及核心价值
  • fiddler 手机抓包(含https) 完整流程
  • ChatGPT学python——制作自己的AI模型(一)初步了解