【OJ】动归练习三

个人主页 : zxctscl
如有转载请先通知

题目

  • 1. LCR166. 珠宝的最高价值
    • 1.1 分析
    • 1.2 代码
  • 2. 931.下降路径最小和
    • 2.1 分析
    • 2.2 代码
  • 3. 64.最小路径和
    • 3.1 分析
    • 3.2 代码

1. LCR166. 珠宝的最高价值

在这里插入图片描述

1.1 分析

  1. 状态表示
    以[i][j]位置为结尾,表示到达[i][j]位置时,此时的最大价值。

  2. 状态转移方程
    要在[i][j]位置时候得到最大价值,要么从它上面的一个下来,要么从它左边一个过来,但是选择的是价值更大的那一个,再加上它本身那一个所对应的价值
    dp[i][j]=max(dp[i-1][j],dp[i][j-1])+frame[i][j]

  3. 初始化
    这里也是要涉及到可能会越界问题,就直接多开一行和一列,为了不影响价值计算的结果就全部都初始化为0。这里得注意下标的映射,此时在dp[i][j]位置就对应frame[i-1][j-1],写代码时候得注意。
    在这里插入图片描述

  4. 填表顺序
    从上往下,从左往右

  5. 返回值
    直接返回dp[m][n]就行
    在这里插入图片描述

1.2 代码

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

    }
};

2. 931.下降路径最小和

2.1 分析

  1. 状态表示
    同样是以[i][j]位置结尾,来找下降路径的最小和。

  2. 状态转移方程

在这里插入图片描述
想要到达[i][j]位置有三种方式[i-1][j-1]和[i-1][j]还有[i-1][j+1],

在这里插入图片描述
而题目要求的是最小和,那么就取这三个位置的最小值和,再加上这个位置本身的值
在这里插入图片描述

  1. 初始化
    像绿色星号标注的位置可能会存在越界的问题,所以就多开两列和一行。但是想让填表时候第一行位置所在的值不变,那么新开空间的第一行就初始化为0:
    在这里插入图片描述
    但如果也把左边开的这一列初始化为0,那么红色格子这格的最小值和可能就会用到这个0,所以这里不能写0,为了不改变选择的结果,就把这些初始化为INT_MAX

在这里插入图片描述

  1. 填表顺序
    从上往下

  2. 返回值
    返回最后一行最小的值
    在这里插入图片描述

2.2 代码

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
     int n=matrix.size();
     vector<vector<int>> dp(n+1,vector<int> (n+2,INT_MAX));
     for(int j=0;j<n+2;j++)dp[0][j]=0;

     for(int i=1;i<=n;i++)
     {
        for(int j=1;j<=n;j++)
        {
            dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1]))+matrix[i-1][j-1];
        }
     }
     int ret=INT_MAX;
     for(int j=1;j<=n;j++)
       ret=min(ret,dp[n][j]);

    return ret;
    }
};

3. 64.最小路径和

在这里插入图片描述

3.1 分析

  1. 状态表示
    以[i][j]为结尾,找最小和。
    dp[i][j]表示到达[i][j]位置时,最小路径和。

  2. 状态转移方程
    根据最近的一步划分问题。
    到到达[i][j]位置有两种方式,一种从上面,一种从左边
    在这里插入图片描述
    一种是以最小的路径到上面,然后加上当前位置的值;
    另一种是最小的路径到左边,然后加上当前位置的值。
    在这里插入图片描述
    所以到达的dp[i][j]最小值就是,两种中取最下的那一个
    在这里插入图片描述

  3. 初始化
    这里可能会存在越界访问的情况,所以多开一行和一列。但要注意里面填的值,要保证在后面计算的结果是正确的。
    第一行第一列为了值不被改变,就得在新开空间的上面一格和左边一格的值为0,其他的为了不影响后面取最小值和的计算,都初始化为INT_MAX
    在这里插入图片描述

  4. 填表顺序
    从上往下,从左往右

  5. 返回值
    要求每个位置的最小值,就直接返回dp[m][n]
    在这里插入图片描述

3.2 代码

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
     
     int m=grid.size(),n=grid[0].size();
     vector<vector<int>> dp(m+1,vector<int> (n+1,INT_MAX));
     dp[0][1]=dp[1][0]=0;

     for(int i=1;i<=m;i++)
     {
        for(int j=1;j<=n;j++)
        {
            dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1];
        }
     }
     return dp[m][n];
    }
};

有问题请指出,大家一起进步!!!

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

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

相关文章

AI大模型智能大气科学探索之:ChatGPT在大气科学领域建模、数据分析、可视化与资源评估中的高效应用及论文写作

深度探讨人工智能在大气科学中的应用&#xff0c;特别是如何结合最新AI模型与Python技术处理和分析气候数据。课程介绍包括GPT-4等先进AI工具&#xff0c;旨在帮助大家掌握这些工具的功能及应用范围。内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等实战案例…

HN 热帖|难以想象,20 年前代码版本管理是如何做的

本文源自 Hacker News 热帖&#xff0c;原文 Twenty Years Is Nothing&#xff0c;作者 Adrian Kosmaczewski。 在之前的文章中&#xff0c;我们曾称英语在我们的行业中如此普遍&#xff0c;以至于没有人质疑其使用。同样&#xff0c;Git 也是如此。很难想象仅仅二十年前&#…

掌握数字化运维方法,构建数字化运维体系

文章目录 &#x1f4cb; 前言&#x1f3af; 什么是数字化转型&#x1f3af; 数字化运维发展变化&#x1f3af; 数字化转型书籍推荐&#x1f9e9; 主要内容&#x1f9e9; 适合读者 &#x1f525; 参与方式 &#x1f4cb; 前言 数字化转型已经成为大势所趋&#xff0c;各行各业正…

Leetcode1997. 访问完所有房间的第一天

Every day a Leetcode 题目来源&#xff1a;1997. 访问完所有房间的第一天 解法1&#xff1a;动态规划 状态转移&#xff1a; 代码&#xff1a; /** lc appleetcode.cn id1997 langcpp** [1997] 访问完所有房间的第一天*/// lc codestart class Solution { private:const in…

探索定制化创新,定制你的Jetson Linux驱动开发之旅!

Jetson驱动定制开发 Jetson linux驱动定制开发 在数字创新的浪潮中&#xff0c;Jetson系列为我们带来了无限的可能性。然而&#xff0c;要想真正发挥这种潜力&#xff0c;我们需要更多的自由和个性化。现在&#xff0c;通过定制化的Jetson Linux驱动开发&#xff0c;你可以实…

MYSQL8最新安装教程 ! ! !

MYSQL8最新安装教程 安装配置MySql一、下载MySql进入官网&#xff1a;https://dev.mysql.com 二、新建文件夹管理Mysql系列文件三、配置my.ini文件四、执行数据库初始化命令五、基础配置六、配置系统环境变量 可能会遇到无法启动MYSQL服务的问题:一、尝试删除MySQL服务&#xf…

揭秘:为何单点登陆方案(SSO)已无法满足现代企业的身份管理需求,统一身份中台才是未来

在信息化建设的浪潮中&#xff0c;企业面临着越来越多的应用系统管理和用户身份认证问题。许多企业最初可能认为&#xff0c;单点登录&#xff08;SSO&#xff09;系统就是他们所需要的解决方案&#xff0c;用以简化用户在多个系统间的登录过程。然而&#xff0c;随着业务的发展…

正大国际:黄金投资稳定与保值的避险之选

黄金作为备受投资者追捧的贵金属&#xff0c;在金融市场中扮演着重要的角色。黄金作为一种避险资产具有稳定性和保值特性&#xff0c;能够在市场动荡时提供投资者的资金保护&#xff0c; 正大召煮4/26/12 xiaoccsw 避险需求:当股票市场、货币市场或其他资产类别表现不佳时&a…

电脑关机速度很慢怎么解决?

给电脑关机,总是要很久才完全关闭。这是因为计算机运行了太长时间,并且打开的程序太多,则关闭时间超过十秒钟,这是正常的现象。还有就是计算机升级或补丁程序更新也将导致计算机缓慢关闭。此时,建议耐心等待关闭完成。还有可能是系统故障了。接下来分享电脑关机速度很慢怎…

高中数学:零点综合题型(拔高)

一、零点与交点 关键原则 1、数形结合 2、方程思想 例题1 解题思路 1、函数转化成方程 2、零点问题转化成交点问题 3、数形结合 4、对数运算法则&#xff08;函数值的和 转化成 x的积&#xff09; 二、分段函数零点 关键原则 1、分段函数分段看 2、数形结合 3、零点转交点…

springboot多模块

这里springboot使用idea中的 Spring Initializr 来快速创建。 一、demo 1、创建父项目 首先使用 Spring Initializr 来快速创建好一个父Maven工程。然后删除无关的文件&#xff0c;只需保留pom.xml 文件。 &#xff08;1&#xff09;new Project -> spring initializr快…

Java设计模式之装饰器模式

装饰器模式是一种结构型设计模式&#xff0c;它允许动态地将责任附加到对象上。装饰器模式是通过创建一个包装对象&#xff0c;也就是装饰器&#xff0c;来包裹真实对象&#xff0c;从而实现对真实对象的功能增强。装饰器模式可以在不修改原有对象的情况下&#xff0c;动态地添…

李宏毅深度强化学习导论——策略梯度

引言 这是李宏毅老师深度强化学习视频的学习笔记&#xff0c;主要介绍策略梯度的概念&#xff0c;在上篇文章的末尾从交叉熵开始引入策略梯度。 如何控制你的智能体 上篇文章末尾我们提到了两个问题&#xff1a; 如何定义这些分数 A A A&#xff0c;即定义奖励机制&#xff…

Nmap扫描工具流量特征

如果Nmap扫描探测服务过程中如有HTTP协议&#xff0c;则User-Agent也会有明显的特征。例如会出现nmap关键字。 但是User-Agent可以被修改&#xff0c;如果被修改的话&#xff0c;我们可以通过告警的次数进行判断&#xff08;同一源IP&#xff09;&#xff0c;看是否是大量的扫描…

产品经理与产品原型

1. 前言 互联网产品经理在向技术部门递交产品策划方案时,除了详尽的需求阐述,一份清晰易懂的产品原型设计方案同样不可或缺。一份出色的原型设计,不仅能促进前期的深入讨论,更能让美工和开发人员更直观地理解产品特性,进而优化工作流程,减少不必要的时间消耗,提升整体工…

主流公链 - BCH BSV BTG

为什么出现分叉 BTC是自由的&#xff0c;BTC社区也是自由的&#xff0c;自然而然的会出现不同观点的群体 1. 比特币现金&#xff08;Bitcoin Cash&#xff0c;BCH&#xff09; 分叉日期&#xff1a; 2017年8月1日主要目的&#xff1a; 提高比特币的交易吞吐量和降低交易费用技术…

ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1

一、ActiveMQ Artemis 介绍 Apache ActiveMQ Artemis 是一个高性能的开源消息代理&#xff0c;它完全符合 Java Message Service (JMS) 2.0 规范&#xff0c;并支持多种通信协议&#xff0c;包括 AMQP、MQTT、STOMP 和 OpenWire 等。ActiveMQ Artemis 由 Apache Software Foun…

如何解决了“该虚拟机似乎正在使用中”问题

一、问题描述 1、在用VMware虚拟机的时候&#xff0c;有时会发现打开虚拟机时提示“该虚拟机似乎正在使用中。如果该虚拟机未在使用&#xff0c;请按“获取所有权(T)”按钮获取它的所有权。否则&#xff0c;请按“取消©”按钮以防损坏。配置文件: D:\win10x64\Windows 10…

Calico配置路由反射器 (RR) 模式

RR介绍 在 Calico 网络中&#xff0c;默认使用 Node-to-Node Mesh 全互联模式&#xff0c;即集群中的每个节点之间都会相互建立 BGP 连接&#xff0c;用于路由交换。然而&#xff0c;随着集群规模的扩大&#xff0c;全互联模式会导致连接数成倍增加&#xff0c;产生性能问题。为…

C++:梦的开始——创建第一个hello world(1)

我这里使用的编写代码的工具是Start Experimental Instance of Visual Studio 2022 你可以去微软的官网上寻找&#xff0c;并且安装 部署项目 项目就是一个文件夹&#xff0c;他将我们的数据都放到了里面&#xff0c;这就是一个项目 在Visual Studio 2022中 选择c 的空项目&a…