使用动态规划求mxn个格子,从左上角到右下角的最小路径,每次只能向右或向下移动

wpyblog wpyblog     2022-12-26     790

关键词:

1 2 5 6
3 2 4 2
4 3 3 1
5 1 2 1

对于第一行的元素,因为只能向右移动,所以路径是固定的,同样对于第一列元素,路径也是固定的。

而对于非第一行与第一列的元素,我们只要找到到它上方和左侧元素的最小路径即可,因为求最短路径将会与其相邻元素有关,所以可以使用动态规划算法。

 

步骤

  加入所求数组为grid[m][n],我们就可创建dp[m][n]存储到达每个元素的最短路径 dp[i][j]就表示从左上角开始到[i][j]的最短路径,从而求出最终的结果。

  •   dp[0][0] = grid[0][0]
  •   对于第一行元素(即 i = 0 同时 j  > 0),每次向右移动,求出到达每个元素的路径 dp[0][j] = dp[0][ j - 1]+grid[0][j]。
  •   对于第一列元素(即 i > 0 同时 j = 0),每次向下移动,求出到达每个元素的路径 dp[i][0] = dp[i - 1][0]+grid[i][0]。
  •   对于其他元素(即 i > 0 同时 j >0),dp[i][j] = Math.min(dp[i - 1][j],dp[i][ j - 1])+grid[i][j];
  •   最后返回 dp[m -1][n - 1] 即为左上角都右下角的最短路径。

  

动态规划算法-2(代码片段)

给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。举例:输入:arr=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总... 查看详情

动态规划2

有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。给定一个矩阵map及它的行数n和列数m&nbs... 查看详情

动态规划——leetcode64.最小路径和(代码片段)

...目给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释&#... 查看详情

动态规划的题目特点以及求“硬币个数最少”(代码片段)

...角有多少种方法选出K个数使得和是Sum2、求最大最小值从左上角走到右下角路径的最大数字和最长上升子序列长度3、求存在性取石子游戏,先手是否取胜能不能选出K个数使得和是SUM实例一你有三种硬币面值分别是:2元&#x... 查看详情

地下城游戏

题目:给一个n*m的格子,每个格子里有一些值,负的代表要减去,正的代表可以加上,从左上到右下,走到每个格子时,值不能小于等于0,求最小的初始值思路:从右下到左上求到达每个格子的最小值publicintcalculateMinimumHP(int[][]... 查看详情

leetcode64题最小路径和动态规划和深搜(代码片段)

...述给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释&#... 查看详情

leetcode64题最小路径和动态规划和深搜(代码片段)

...述给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释&#... 查看详情

动态规划---从左上角到右下角的价值最大的路径

编程题:动态规划---从左上角到右下角的价值最大的路径腾讯2016年4月2号暑假实习移动开发岗的笔试题,编程题第一题大概题目是: 一个m*n的矩阵,只能向右走或是向下走,矩阵每一个元素代表一个财富值,要求打印出从左... 查看详情

动态规划

1.从左上角走到右下角得到二维数组最大和或最小和(二维数组中元素均为非负数)  dp[i][j]表示从左上角走到(i,j)位置的最小路径和,  当i=0||j=0时 dp[i][j]的值为前一个dp的值和当前位置元素的值  其他情况下... 查看详情

二维数组从左上角走到右下角的路数(动态规划求解)(代码片段)

二维数组从左上角走到右下角的路数(动态规划求解)#include<stdio.h>#include<stdlib.h>voidfun(intm,intn) int**p=(int**)malloc(m*sizeof(int*)); inti,j; for(i=0;i<n;i++) p[i]=(int 查看详情

p3956棋盘(代码片段)

...能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。当你从一个格子走向另一个格子... 查看详情

[noip2017普及组]棋盘(代码片段)

...能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。当你从一个格子走向另一个格子... 查看详情

动态规划专题2:矩阵的最小路径和(代码片段)

...左程云著矩阵的最小路径和【题目】给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角位置,路径上所有的数字累加起来就是路径和,返回所有路径中最小的路径和。【举例】如果给定的m如下:1359813450618... 查看详情

算法52-----矩阵最小路径动态规划(代码片段)

...一个包含非负整数的m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总... 查看详情

110最小路径和(代码片段)

...scription描述给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。你在同一时间只能向下或者向右移动一步标签动态规划(DP) 思路:同数字三角形,创建动态规划数组dp【m】【n】,dp【i】... 查看详情

数据结构与算法简记--动态规划理论(代码片段)

...n的矩阵w[n][n]。矩阵存储的都是正整数。棋子起始位置在左上角,终止位置在右下角。我们将棋子从左上角移动到右下角。每次只能向右或者向下移动一位。从左上角到右下角,会有很多不同的路径可以走。我们把每条路径经过... 查看详情

leetcode64.最小路径和(代码片段)

...述给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释&#x... 查看详情

ybt1252广度优先搜索走迷宫(二维最小步数)(代码片段)

...不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。【输入】第一行是两个整数,R和C,代表迷宫的长和宽。(1&le... 查看详情