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

【动态规划】下降路径最小和 C++

下降路径最小和(难度:中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

该题对应力扣网址

思路

题目中提到:
位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1)

那么当我们反推的时候,dp[i][j]是由它的左上方,正上方,右上方的数字决定的,即dp[i-1][j-1],dp[i-i][j],dp[i-1][j+1]

每次从这三个位置的数据找最小的,这样就能确保,当下降到最后一行的时候,存储的路径和是最小的。

AC代码

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[m-1].size();
        vector <vector<int>> dp (m, vector<int>(n));

        int result=INT_MAX;
        //用dp[0][0]初始化matrix[0]这一行的所有值
        copy(matrix[0].begin(),matrix[0].end(),dp[0].begin());
        int num1;
        int num3;
        for(int i=1;i<m;i++){
            for(int j=0;j<n;j++){
                num1=INT_MAX;
                num3=INT_MAX;
                if(j>0){
                    num1=dp[i-1][j-1]+matrix[i][j];
                }
                int num2=dp[i-1][j]+matrix[i][j];
                if((j+1)<n){
                    num3=dp[i-1][j+1]+matrix[i][j];
                }
                
                int temp;

                result=min({num1,num2,num3});

                dp[i][j]=result;
            }
        }

        return *min_element(dp[n-1].begin(),dp[n-1].end());
    }
};

补充:新的代码用法

*min_element()函数可以直接返回一个一维数组中最小值

return *min_element(dp[n-1].begin(),dp[n-1].end());
http://www.dtcms.com/a/12824.html

相关文章:

  • 【计算机网络】数据链路层深度解析
  • 【深度学习】(3)--损失函数
  • Python的基础知识,帮助初学者快速上手
  • Shader Graph Create Node
  • 如何快速恢复安卓手机删除文件
  • 解锁定位服务:Flutter应用中的高德地图定位
  • 倍增练习(1)
  • 【win工具】win安装flameshot并设置截图快捷键
  • C++ | Leetcode C++题解之第415题字符串相加
  • 微软九月补丁星期二发现了 79 个漏洞
  • 【CSS Tricks】在css中尝试一种新的颜色模型HSL
  • 向日葵好用吗?4款稳定的远程控制软件推荐。
  • C++ : 继承问题 [virtual函数调用,为什么禁止在virtual使用默认参数]
  • 深入探讨IDSIPS:信息安全的未来趋势与应用
  • Python | Leetcode Python题解之第401题二进制手表
  • 代码管理-使用TortoiseGit同步项目到Github/Gitee
  • 近期值得关注的3个线性时序模型及其未来发展综述
  • html加载页面
  • XWiki中添加 html 二次编辑失效
  • C++初阶学习第六弹------标准库中的string类
  • 微信小程序页面制作——婚礼邀请函(含代码)
  • linux 解压缩
  • sql server 分区表查询
  • Android 12系统源码_窗口管理(八)WindowConfiguration的作用
  • springboot通过tomcat部署项目(包含jar、war两种方式,迄今为止全网最详细!2024更新..建议收藏,教学!万字长文!)
  • 二叉树的链式结构和递归程序的递归流程图
  • JavaScript substring() 方法
  • 关于循环Socket创建超Linux文件句柄限制现象分析
  • Etcd权限认证管理
  • HTML——基本标签