动态规划(6)下降路径最小值

给你一个 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
解释:如图所示,为和最小的两条下降路径
java 复制代码
public class Solution {
    public int minFallingPathSum(int[][] matrix) {
        //1.创建dp表
        //2.初始化
        //3.填表
        //4.返回值
        int n= matrix.length;
        int[][] dp =new int[n+1][n+2];
        for (int i=1;i<=n;i++)dp[i][n+1]=Integer.MAX_VALUE;
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                dp[i][j] =Math.min(dp[i-1][j],Math.min(dp[i-1][j-1],dp[i-1][j+1]))+matrix[i-1][j-1];
        int ret=Integer.MAX_VALUE;
        for (int j=1;j<=n;j++)
            ret=Math.min(ret,dp[n][j]);
        return  ret;
        }

    public static void main(String[] args) {
        Solution solution=new Solution();
        int [][]matrix={{-19,57},{-40,5}};

        System.out.println(solution.minFallingPathSum(matrix));
    }
    }
相关推荐
AuroraWanderll6 小时前
C++类和对象--访问限定符与封装-类的实例化与对象模型-this指针(二)
c语言·开发语言·数据结构·c++·算法
月明长歌6 小时前
【码道初阶】LeetCode 622:设计循环队列:警惕 Rear() 方法中的“幽灵数据”陷阱
java·算法·leetcode·职场和发展
mit6.8247 小时前
博弈-翻转|hash<string>|smid
算法
代码游侠7 小时前
复习——Linux 系统编程
linux·运维·c语言·学习·算法
Han.miracle7 小时前
优选算法-005 有效三角形的个数(medium)
数据结构·算法·有效的三角形个数
yuuki2332337 小时前
【C++】类和对象下
数据结构·c++·算法
huohuopro7 小时前
结构体与链表
数据结构·算法·链表
CoovallyAIHub7 小时前
告别“消失的小目标”:航拍图像检测新框架,精度飙升25.7%的秘诀
深度学习·算法·计算机视觉
第二只羽毛7 小时前
外卖订餐管理系统
java·大数据·开发语言·算法
发疯幼稚鬼7 小时前
希尔排序与堆排序
c语言·数据结构·算法·排序算法