【动态规划专栏】专题二:路径问题--------4.下降路径最小和

简介: 【动态规划专栏】专题二:路径问题--------4.下降路径最小和


题目来源

本题来源为:

Leetcode 931. 下降路径最小和

题目描述

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

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

题目解析

题目很好理解,注意一点就是选择下一行发的元素是离他最近的三个位置的元素。

算法原理

1.状态表示

经验+题目要求

对于本题而言就是:

dp[i][j]表示:走到[i,j]位置的时候,最小的下降路径

2.状态转移方程

分三种情况:

因此状态方程为:

dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1]))
         +matrix[i-1][j-1];

3.初始化

本次的初始化需要加两列一行。

4.填表顺序

整体从上往下

5.返回值

返回最后一行的最小值

代码实现

动态规划的代码基本就是固定的四步:

1.创建dp表
2.初始化
3.填表
4.返回值

本题完整代码实现:

class Solution 
{
public:
    int minFallingPathSum(vector<vector<int>>& matrix) 
    {
        int n=matrix.size();
        //创建dp表
        vector<vector<int>> dp(n+1,vector<int>(n+2,INT_MAX));
        //初始化第一行
        for(int i=0;i<n+2;i++)
          dp[0][i]=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;
    }
};

时间复杂度:O(N)

空间复杂度:O(N)

相关文章
|
3月前
|
存储 监控 安全
RFID车辆无感识别进出管理更高效
RFID技术广泛应用于车辆无感识别进出管理,如停车场、园区、物流等场景。通过自动识别车辆身份,实现无需停车或人工操作的高效通行,提升管理便利性与智能化水平。
|
6月前
|
数据采集 人工智能 数据可视化
如何让AI写出高质量的数据分析报告?DataV-Note的评估体系揭秘
本文围绕DataV-Note智能分析创作平台的评估体系建设展开,旨在探索如何在AI技术快速发展的背景下,构建一套科学、可量化、多维度的数据分析报告评估体系。
365 10
|
6月前
|
人工智能 运维 网络协议
别只盯着ChatGPT!大模型也能帮你抓网络“鬼”
别只盯着ChatGPT!大模型也能帮你抓网络“鬼”
394 4
|
7月前
|
机器学习/深度学习 数据采集 算法
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
|
API 定位技术
api接口如何对接?(带你了解api接口的相关知识)
API接口是在产品和研发领域广泛应用的专业术语,主要用于公司内部系统衔接及公司间合作。本文将详细讲解API接口的概念、必要性及其核心要素。首先介绍API接口的基本原理与应用场景,随后阐述其重要性,最后解析API接口的核心组成部分,帮助读者深入理解API接口的工作机制。适合产品小白和求职者阅读,提升专业知识。
|
机器学习/深度学习 并行计算 计算机视觉
Jurgen、曼宁等大佬新作:MoE重塑6年前的Universal Transformer,高效升级
本文介绍了一种新型Transformer架构,旨在解决Universal Transformer (UT) 在参数-计算效率上的问题。MoEUT结合了Mixture-of-Experts (MoE) 方法和UT的优点,通过MoE Feedforward Blocks、MoE Self-Attention Layers、Layer Grouping及Peri-LayerNorm等技术创新,实现了更高效的计算和内存使用。实验结果显示,MoEUT在多个语言建模和代码生成任务上显著优于标准Transformer,且计算资源需求更低。
338 5
|
机器学习/深度学习 人工智能 算法
极智AI | 谈谈非线性激活函数的量化方式
本文主要聊一聊深度学习模型量化中对激活函数的处理方式。
534 0
|
消息中间件 监控 NoSQL
ElasticSearch六 ElasticSearch扩展之FileBeat、Logstash 2
ElasticSearch六 ElasticSearch扩展之FileBeat、Logstash
500 0
自适应池化、最大值池化和均值池化效率的比较探究
自适应池化、最大值池化和均值池化效率的比较探究
360 0