矩阵的最小路径和

矩阵的最小路径和

http://www.nowcoder.com/questionTerminal/7d21b6be4c6b429bb92d219341c4f8bb

题目描述
给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。

解法

  //解法:动归
    //状态定义: dp[i][j] 到(i,j)位置的最小路径和
    //状态转移:dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + num[i][j]
    //状态初始化:
    //       dp[0][0..m] = [num[0][0], dp[0][0] + num[0][1], ...]
    //       dp[0..n][m] = [num[0][0], dp[0][0] + num[1][0], ...]
    // 时间:O(n*m) 空间O(n*m)
    int minPathSum(vector<vector<int> >& matrix) {
        vector<vector<int>> dp(matrix.size(), vector<int>(matrix[0].size(), 0));
        //状态初始化
        dp[0][0] = matrix[0][0];
        for (int i = 1; i < matrix.size(); i++) {
            dp[i][0] = dp[i-1][0] + matrix[i][0];
        }
        for (int j = 1; j < matrix[0].size(); j++) {
             dp[0][j] = dp[0][j-1] + matrix[0][j];
        } 
        //状态转移
        for (int i = 1; i < matrix.size(); i++) {
            for (int j = 1; j < matrix[0].size(); ++j) {
                dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + matrix[i][j];
            }
        }
        return dp[matrix.size() - 1 ][matrix[0].size() - 1];
    }
全部评论

相关推荐

昨天 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 15:07
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务