动态规划—最小路径和

动态规划之矩阵的最小路径 动态规划方法计算矩阵的最短路径 阅读详情

问题描述:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。

算法思路

采用动态规划,将上述矩阵转为下面的矩阵,状态转移方程为:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]

class Solution {
    public int minPathSum(int[][] grid) {
        if (grid == null || grid.length == 0 || grid[0].length == 0) {
            return 0;
        }
        int rows = grid.length, columns = grid[0].length;
        int[][] dp = new int[rows][columns];
        dp[0][0] = grid[0][0];
        for (int i = 1; i < rows; i++) {
            dp[i][0] = dp[i - 1][0] + grid[i][0];
        }
        for (int j = 1; j < columns; j++) {
            dp[0][j] = dp[0][j - 1] + grid[0][j];
        }
        for (int i = 1; i < rows; i++) {
            for (int j = 1; j < columns; j++) {
                dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
            }
        }
        return dp[rows - 1][columns - 1];
    }
}
动态规划最小路径路径坐标正确输出 在学习动态规划算法,遇到了一个算法编程题如下: 寻找一条从左上角 (arr[0][0])到右下角(arr[m-1][n-1])的路线,使得沿途经过的数组中的整数最小。 给的程序中有输出路径坐标的代码,可输出的坐标实际的路径坐标差别很大。 题目给的参考代码如下: public class ShortestPath { public static int getMinPath(int[][] arr) { if(arr==null||arr.length==0) { return 0; } 阅读详情

相关推荐

上机笔试题目:取出指定条件二维数组的子数组

取出指定条件二维数组的子数组: 1)传入参数为: 参数一:String[][]sArray2字符串二维数组 参数二:Stringkey字符串 参数三:StringkeyFormat含匹配符的字符串,如下:%0-%1,其中%x含义如为:一维数据列序号为x的值。 keyFormat 可以为 %0-%1-%2,%0-%3-%8-%x...... 例子如下...

91奔跑的蜗牛 608

最小总和问题动态规划算法

#include<iostream> #include<time.h> #include<vector> using namespace std; int min(int a,int b){//比较大小的函数 **algorithm库的min函数用不了== if(a<b){ return a; }else{ return b; } } int minSum(vector<vector<int> >& triangle.

AHASAN的博客 1277

Halcon —— 像像素类型与转换

像类型 就目前工业领域主流的像处理工具halcon来讲,有以下几张像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

数字三角形

题目描述 给定一个由n行数字组成的数字三角形设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大; 三角形的第i行有i个数(i=1...n),对于i,j,位置只能走到i+1,j与i+1,j+1位置;   输入 n代表层数,下面是n层;(1&lt;=n&lt;350) (三角形里的数&lt;100);   输出 最大   样例输入 2 97 11 88...

分享不仅为了他人,同时也为了自己 291

算法(十二)最小

最小

zhougb3的博客 1376

最小总和问题

                                                                           最小总和问题     将正整数排成等边三角形三角形底边有n个数下图给出一个n=4例子。从三角形顶点出发通过一系列相邻整数(在中用圆圈表示),如何使得到达底边总和最小?为这个问题设计一个动态规划算法给出时间效率。          ...

浅夏沫若的博客 1754

最大总和问题

 最大总和问题正整数排成等边三角形(也叫数塔),三角形底边个数下图给出了的一个例子。从三角形顶点出发通过一系列相邻整数(在中用正方形表示),如何使得到达底边总和最大? 问题分析与解决思路 数塔由顶部到底部的路径,由顶向下考虑由底向上考虑,算法都是一样的。这里为了明确结果,给出由底向上分析的解题思路。 将数塔的规模缩小到只有顶部3层,可以简单地分析出,最大总和为第...

S_hen_的博客 2332

动态规划 —— 路径问题-最小路径

64. 最小路径 - 力扣(LeetCode)

hedhjd的博客 1073

动态规划最小路径

Java 动态规划题解最小路径. 详解状态转移方程初始化, 从 0 到 1 过渡动态规划

这个人很懒, 什么都没留下(这是我写的) 797

动态规划Ⅳ】二维数组的动态规划——最小路径

定义一个原数组一样大小的二维数组,进行状态转移,其实上面是一样的,只是需要一个新的数组。i < row;j++){// 定义新的数组i < row;i++){//单独处理每行第一个,其只能由上一行第一个转移而来// 正常处理,由上一行的j-1j较小的一个转移而来j < i;j ++)//每行最后一个只能由上一行最后一个转移而来i < row;i++)

massive_jiang的博客 1850

动态规划】【路径问题】下降路经最小最小路径、地下城游戏

太大,就是说在那一格有个很大的血包。减完之后就变成一个负值了(你是一个负血的状态,通过这个格子之后也能顺利通过),这是不符合逻辑的。我们关注的是格子的下面右边的状态,所以可能会越界的是最下面一行最右边一行。在初始化的候,可以把所有虚拟出的节点都设为。里面的值,需要保证后续的填表是正确的。为终点构建状态表示

Yeeear的博客 1746

动态规划】【map】【C++算法】1289. 下降路径最小 II

给你一个 n x n 整数矩阵 grid ,请你返回 非零偏移下降路径 数字最小值。 非零偏移下降路径 定义为:从 grid 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。

闻缺陷则喜何志丹 4525

最小路径 动态规划

64. 最小路径 给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。 示例 2: 输入:grid = [[1,2,3],[4,5,6]] 输出:12 思路: 这题62. 不同路径很相似,几乎可以按一模一样的代码结构做出来。但不同的...

TranSad的博客 147

动态规划 —— 路径问题-下降路径最小

931. 下降路径最小 - 力扣(LeetCode)

hedhjd的博客 1303

算法题】动态规划中级阶段之不同路径最小路径

动态规划(Dynamic Programming,简称 DP)是一种解决多阶段决策过程最优化问题的方法。它是一种将复杂问题分解成重叠子问题的策略,通过维护每个子问题的最优解来推导出问题的最优解。动态规划的主要思想是利用已求解的子问题的最优解来推导出更大问题的最优解,从而避免了重复计算。因此,动态规划通常采用自底向上的方式进行求解,先求解出小规模的问题,然后逐步推导出更大规模的问题,直到求解出整个问题的最优解。定义状态:将问题划分为若干个子问题定义状态表示问题的解;

Lion_Long的博客 1098

动态规划--最小总和问题

今天又学习了一道使用动态规划解决的问题:数塔最小总和问题 题目是这样的:将正整数排成等边三角形三角形底边有n个数下图给出了n=4一个例子。从三角形顶点出发通过一系列相邻整数(在中用圆圈表示),如何使得到达底边总和最小?为这个问题设计一个动态规划算法。 n=4例子: 我们可以这样考虑这个问题 从第一层开始,最小值为2 第二层为6 那么第三层呢? 第三层=第二层的动态值加上本身 什么意思呢? 因为总层数为三,所以在第二层,第二层有两种情况,走2+5等于7的路线或者是2+4=6的路线。即有两

weixin_43890220的博客 1747

算法分析与设计-12-数字三角形问题动态规划算法

数字三角形问题动态规划算法 #include #define NUM 100 int tri[NUM][NUM]; int triangle(int n){ inti,j; for(i=n-2;i>=0;i--) for(j=0;j<=i;j++){ if(tr

高行行 763

动态规划 - 路径总数 & 最小路径

动态规划 - 路径总数 & 最小路径

xaiobit_hl的博客 1137

【LeetCode】动态规划最小路径(附完整Python/C++代码)

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和最小。 说明:每次只能向下或者向右移动一步。

Albert_Lsk的博客 1637

动态规划最小路径

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和最小。 说明:每次只能向下或者向右移动一步。 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。 思路: 新建一个额外的 dp 数组,与原矩阵大小相同。在这个矩阵中,dp(i,j) 表示从坐标 (i, j)到右下角的最小路径权值。 我们初始化右下角的 dp 值为对应的原矩阵值,然后去填整个矩阵,对于每个元素考虑移动到右边或者下面,因

Jeniclala的博客 383

遥感像光伏发电检测数据集VOC+YOLO格式271张1类别.7z

样本:blog.csdn.net/2403_88102872/article/details/144499635数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg片以及对应的VOC格式xml文件yolo格式txt文件)片数量(jpg文件个数):271标注数量(xml文件个数):271标注数量(txt文件个数):271标注类别数:1标注类别名称:["guangfu"]每个类别标注的框数:guangfu 框数 = 722总框数:722使用标注工具:labelImg标注规则:对类别进行画矩形框重要说明:暂无特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

上一篇: 动态规划—最长公共子序列
下一篇: 贪心算法—零钱兑换
测试开发abbey
博客等级 码龄10年 266粉丝 411原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值