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

动态规划-LCR 166.珠宝的最大价值-力扣(LeetCode)

一、题目解析

frame二维矩阵中每个值代表珠宝的价值,现在从左上角开始拿珠宝,只能向右或向下拿珠宝,到达右下角时停止拿珠宝,要求拿的珠宝价值最大。

二、算法解析

1.状态表示

我们想要知道的是到达[i,j]为位置时的最大价值,所以dp[i][j]表示:到达[i,j]位置时,珠宝的最大价值

2.状态转移方程

依旧根据最近一步划分问题

3.初始化

初始化要确保(1)初始化的值保证后面填表正确(2) 下标的映射关系

观察左边的图,我们能发现带有小圆圈的格子在填表时会发生越界操作,所以只需要加一行加一列即可。都初始化为0 则是保证填值正确,对于小圆圈dp[1][1]的最大价值为i它本身的价值,所以dp[i-1][j]和dp[i][j-1]初始化为0,其他同理,

此时下标的映射关系为dp[i][i]~fraem[i-1][j-1]

4.填表顺序

从左到右,从上到下

5.返回值

返回到达右下角的最大价值,即dp[i][j]

可以动手去自己实现一下,链接:LCR 166. 珠宝的最高价值 - 力扣(LeetCode)

三、代码示例

class Solution {
public:int jewelleryValue(vector<vector<int>>& frame) {int m = frame.size(),n = frame[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][j-1]+frame[i-1][j-1],dp[i-1][j]+frame[i-1][j-1]);}}return dp[m][n];}
};

 

看到最后,如果对您有所帮助,还请点赞、收藏、关注,点点关注不迷路,我们下期再见! 

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

相关文章:

  • JDBC实现模糊、动态与分页查询的详解
  • 域环境信息收集技术详解:从基础命令到实战应用
  • nodejs特性解读
  • 【C++ Qt】布局管理器
  • vscode用python开发maya联动调试设置
  • SLAM定位常用地图对比示例
  • Ubnutu ADB 无法识别设备的解决方法
  • 前端-HTML元素
  • dagster的etl实现
  • python的漫画网站管理系统
  • 源码安装gperftools工具
  • QMK 宏(Macros)功能详解(实战部分)
  • 前端脚手架开发指南:提高开发效率的核心操作
  • 搜索引擎工作原理|倒排索引|query改写|CTR点击率预估|爬虫
  • Python实例题:Python自动工资条
  • Function Calling万字实战指南:打造高智能数据分析Agent平台
  • spark MySQL数据库配置
  • python四则运算计算器
  • 线对板连接器的兼容性问题:为何老旧设计难以满足现代需求?
  • AI517 AI本地部署 docker微调(失败)
  • VR和眼动控制集群机器人的方法
  • python训练营打卡第26天
  • TiDB 中新 Hash Join 的设计与性能优化
  • 1.共享内存(python共享内存实际案例,传输opencv frame)
  • 网页常见水印实现方式
  • oracle主备切换参考
  • Java大师成长计划之第25天:Spring生态与微服务架构之容错与断路器模式
  • 【ARM】MDK如何将变量存储到指定内存地址
  • Unity3D仿星露谷物语开发44之收集农作物
  • langchain—chatchat