Leetcode每日一题:931. 下降路径最小和(2023.7.13 C++)

目录

931. 下降路径最小和

题目描述:

实现代码与解析:

动态规划

原理思路:


931. 下降路径最小和

题目描述:

        给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径  最小和 。

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1) 。

示例 1:

输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]
输出:13
解释:如图所示,为和最小的两条下降路径

示例 2:

输入:matrix = [[-19,57],[-40,-5]]
输出:-59
解释:如图所示,为和最小的下降路径

实现代码与解析:

动态规划

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {vector<vector<int>> f(matrix.size(), vector<int>(matrix.size(), 0));int n = matrix.size();for (int i = 0; i < n; i++) f[0][i] = matrix[0][i]; // 初始化for (int i = 1; i < n; i++){for (int j = 0; j < n; j++){if (j == 0) f[i][j] = min(f[i - 1][j], f[i - 1][j + 1]) + matrix[i][j]; // 上、右上else if (j == n - 1) f[i][j] = min(f[i - 1][j - 1], f[i - 1][j]) + matrix[i][j]; // 左上,上 else {//左上、上、右上f[i][j] = min({f[i - 1][j - 1], f[i - 1][j], f[i - 1][j + 1]}) + matrix[i][j];}}}int res = 0x3f3f3f3f;for (int i = 0; i < n; i++){res = min(res, f[n - 1][i]);}return res;}
};

原理思路:

        很显然,本题是用动态规划来写的。

        dp[i][j] 的含有为到了 i, j 位置时的最小路径,是由上面可选择的路径取最小加上当前位置的值。两侧的递推式很显然和中间的不同,特判一下,还是比较容易想出来的。

        最后遍历一下以最后一行为结尾的各个最小路径,找出最小值即可。

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

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

相关文章

前端Vue自定义商品订单星级评分 爱心评分组件

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 LangChain 集成搭建智能文档问答系统

目录 准备工作 主要参数 准备数据 开始提问 本文将演示如何使用 Zilliz Cloud 和 LangChain 搭建基于大语言模型(LLM)的问答系统。在本例中,我们将使用一个 1 CU 的 Cluster,还将使用 OpenAI 的 Embedding API 来获取指定文本的向量表示。现在就让我们开始吧。 准备工作…

【Ajax】Express 服务端框架

因为Ajax需要向服务端发送请求。Express框架比较简单&#xff0c;内容使用起来比较少&#xff0c;借助一个基本功能就可以了。 Express 基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架 所以需要安装一下node.js 检查命名&#xff1a;node -v 安装 打开项目最外…

GTK列表显示文本和图片

使用GtkTreeView控件显示包含文本和图片的列表&#xff0c;GtkTreeView/GtkListStore或者GtkTreeView/GtkTreeModel使用的是MVC设计理念。 关于MVC: M层: model 数据模型层(处理数据的增删改查) 提供数据 V层: Views 视图层 (数据展示) 渲染数据 C层: controller 控制层(处理业…

window电脑修复网络不能正常

问题描述 问题的起点是我打开了OpenAPI公司的GPT&#xff0c;在回答的过程中响应很慢&#xff0c;然后自己开始尝试切换连接的服务器&#xff08;这里使用到了网络代理&#xff09;&#xff0c;最后自己做了一个操作是 代理软件的这个菜单里面的增强模式选项&#xff0c;结果…

Flink基本原理剖析讲解

1.Flink简介 Flink是一个批处理和流处理结合的统一计算框架&#xff0c;其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理&#xff0c;是业界最顶级的开源流处理引擎。 Flink最适合的应用场景是低时延的数据处理&#xff08;Data Processing…

Proton 推出开源密码管理器,兼身份管理器

Proton 是由来自欧洲核研究组织 (CERN) 的科学家于 2014 年在瑞士日内瓦创立的一家公司&#xff0c;其最知名的应该就是电子邮件服务 Proton Mail&#xff0c;主打端到端加密、安全和隐私保护。Proton 由科学家领导&#xff0c;其中包括万维网的发明者 Tim Berners-Lee。 该公…

git HEAD detached from

git HEAD detached from 解决&#xff0c;checkout切换分支即可&#xff0c;比如切换到master分支&#xff1a; git checkout master git gerrit code review提交代码HEAD:resf/for/_res/for的提交格式_zhangphil的博客-CSDN博客git gerrit code review提交代码HEAD:resf/for/如…

Flink实时任务性能调优

前言 通常我们在开发完Flink任务提交运行后&#xff0c;需要对任务的参数进行一些调整&#xff0c;通常需要调整的情况是任务消费速度跟不上数据写入速度&#xff0c;从而导致实时任务出现反压、内存GC频繁&#xff08;FullGC&#xff09;频繁、内存溢出导致TaskManager被Kill…

OpenCV 入门教程: Harris角点检测

OpenCV 入门教程&#xff1a; Harris 角点检测 导语一、Harris角点检测原理二、Harris角点检测步骤三、示例应用总结 导语 Harris 角点检测是图像处理中常用的角点检测算法&#xff0c;用于寻找图像中的角点特征。角点是图像中具有明显边缘变化的位置&#xff0c;具有独特性和不…

踩坑记录:xorm的sql()函数后无法使用FindAndCount()

一、起因 懒省事想用 sql 写个有连表操作的分页查询语句&#xff0c;看到 xorm 中 sql 要和代码紧密纠缠在一起就不爽&#xff0c;所有就想用 xorm 中的 session.SQL(sql).Limit(size, offset).FindAndCount() 方法解决。不曾想。。。 sql: expected 15 destination argument…

【搜索引擎Solr】Solr:提高批量索引的性能

几个月前&#xff0c;我致力于提高“完整”索引器的性能。我觉得这种改进足以分享这个故事。完整索引器是 Box 从头开始创建搜索索引的过程&#xff0c;从 hbase 表中读取我们所有的文档并将文档插入到 Solr 索引中。 我们根据 id 对索引文档进行分片&#xff0c;同样的文档 id…