动态规划-矩阵的最小路径和(只允许向右向下移动)

一、问题描述

二、解题思路

这个题目是典型的动态规划问题,只能从左上角开始,往右或者往下移动。

1.dp数组的初始化:

第一行:设置行总花费变量,每往右走一个格把当前格的花费Cost加到总花费中,总花费就是当前格的最小花费。

第一列:设置列总花费变量,每往下走一个格把当前格的花费Cost加到总花费中,总花费就是当前格的最小花费。

2.状态转移方程:

设当前在第[i][j]位置,从左上角到当前位置的总花费=下面两者较小值 加上当前格花费cost

2.1 从左侧格[i][j-1]往右走

2.2 从上侧格[i-1][j]往下走

即:dp[i][j] = Min(dp[i][j-1],dp[i-1][j])+cost

三、代码实现

java 复制代码
import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix int整型二维数组 the matrix
     * @return int整型
     */
    public int minPathSum (int[][] matrix) {
        // 这个题目是典型的动态规划问题
        int rowLen=matrix.length;
        int colLen=matrix[0].length;
        int[][] dpMatrix=new int[rowLen][colLen];
        
        //初始化dpMatrix
        int colCost=0;
        for(int col=0;col<colLen;col++){//初始化第0行
            colCost+=matrix[0][col];
            dpMatrix[0][col]=colCost;
        }
        int rowCost=0;
        for(int row=0;row<rowLen;row++){//初始化第0列
            rowCost+=matrix[row][0];
            dpMatrix[row][0]=rowCost;
        }

        //每次只能向右或者向下移动
        for(int row=1;row<rowLen;row++){
            for(int col=1;col<colLen;col++){
                int downCost=dpMatrix[row-1][col]+matrix[row][col];
                int rightCost=dpMatrix[row][col-1]+matrix[row][col];
                dpMatrix[row][col]=Math.min(downCost,rightCost);
            }
        }
        return dpMatrix[rowLen-1][colLen-1];
    }
}

四、刷题链接

矩阵的最小路径和_牛客题霸_牛客网

相关推荐
灵智实验室5 小时前
PX4状态估计技术EKF2详解(二):EKF2 误差状态动力学与协方差传播
算法·无人机·px 4
米粒15 小时前
力扣算法刷题 Day 64 Floyd算法 & A* 算法 & 总结篇
算法·leetcode·职场和发展
XX風6 小时前
OpenGL中Face culling 面剔除的具体实现
算法·图形渲染
IT猿手6 小时前
光伏模型参数估计:基于山羊优化算法(GOA )的光伏模型参数辨识问题求解研究,免费提供完整MATLAB代码链接
开发语言·算法·matlab·群智能优化算法·智能优化算法·光伏模型参数估计·光伏模型参数辨识
麻雀飞吧6 小时前
期货量化策略讲解:天勤量化下的跨期价差均值回归策略实战
python·算法·均值算法·回归
sali-tec7 小时前
C# 基于OpenCv的视觉工作流-章62-线线距离
图像处理·人工智能·opencv·算法·计算机视觉
WolfGang0073217 小时前
代码随想录算法训练营 Day53 | 图论 part11
算法·图论
呃呃本7 小时前
算法题(图论)
算法·图论
一只数据集7 小时前
商超上货人形机器人全身运控数据集分析——Kuavo 5机器人5W型号夹爪末端执行器操作轨迹数据
人工智能·算法·机器人
谙弆悕博士8 小时前
【附Python源码】基于决策树的信用卡欺诈检测实战
python·学习·算法·决策树·机器学习·数据分析·scikit-learn