美文网首页
动态规划之矩形最短路径和

动态规划之矩形最短路径和

作者: wwq2020 | 来源:发表于2020-07-27 18:27 被阅读0次

题目

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

思路

到达第 i 行第 j 列的最短路径和等于:
第 i-1 行第 j 列的最短路径和加第 i 行第 j 列
第 i 行第 j-1 列的最短路径和加第 i 行第 j 列

两者的最小值

最终源码

func calc(grid [][]int) int {
    length := len(grid)
    if length < 1 {
        return 0
    }
    dp := make([][]int, length)
    for i, each := range grid {
        dp[i] = make([]int, len(each))
    }
    dp[0][0] = grid[0][0]
    for i := 0; i < length; i++ {
        for j := 0; j < len(grid[i]); j++ {
            if i == 0 && j != 0 {
                dp[i][j] = dp[i][j-1] + grid[i][j]
            } else if j == 0 && i != 0 {
                dp[i][j] = dp[i-1][j] + grid[i][j]
            } else if i != 0 && j != 0 {
                dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]
            }
        }
    }
    return dp[length-1][len(dp[length-1])-1]
}

func min(a, b int) int {
    if a > b {
        return b
    }
    return a
}

相关文章

  • 动态规划之矩形最短路径和

    题目 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小,每次...

  • 最短路径 之 Floyd 算法

    • 最短路径 之 Dijkstra 算法• 最短路径 之 Bellman 算法 Floyd算法是基于一种动态规划的...

  • Asynchronous dynamic programming

    本文代码点击这里下载。 动态规划方法 如果节点位于到的最短路径上,那么到的路径也必须是和之间的最短路径。这种“分而...

  • 理解动态规划、BFS和DFS

    一、动态规划 找到两点间的最短路径,找最匹配一组点的线,等等,都可能会用动态规划来解决。 参考如何理解动态规划中,...

  • 维特比算法

    动态规划求最短路径算法,与穷举法相比优点在于大大降低了时间复杂度; 假如从起点A到终点S的最短路径Road经过点B...

  • LeetCode-Minimum Path Sum

    题目要求:相比较于unique path,寻找一条最短路径,仍然采用动态规划:Method: flag[i][j]...

  • floyd算法解析

    floyd算法可求得多源点间的最短路径算法使用动态规划求解: 状态转移方程 dp[i][j][k]=min(dp[...

  • 最短路径 之 Dijkstra 算法

    • 最短路径 之 Floyd 算法• 最短路径 之 Bellman 算法 Dijkstra算法是用于求解单源最短路...

  • 算法与数据结构(九) 图论:最短路径问题

    最路径问题 Shortest Path 一个节点到另一个节点最短的路径。路径规划问题。 路径规划 工作任务规划 对...

  • skyline TE 二次开发-基于arcgis server进

    想用开源免费的路径规划方法,请移步:用Postgis进行最短路径规划 Skyline TerraExplorer对...

网友评论

      本文标题:动态规划之矩形最短路径和

      本文链接:https://www.haomeiwen.com/subject/wbktrktx.html