首页 > 其他 > 详细

矩阵的最小路径和

时间:2021-04-15 15:22:31      阅读:19      评论:0      收藏:0      [点我收藏+]

刚才刷算法题遇见这样一道题

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

示例
技术分享图片

这题解题思路很是很清晰的:
1.首先新数组第一行和第一列的数据肯定是确定的,都是这个数据加上前面的数据的和(当前数据都是当前数据加上前一个数据,就是和)
2.其余的(从第二列第二个数据开始)后面的数据都是根据左边或者上方最小的部分加来的,这些节点都是当前值加上上方或者左方节点

 public int minPathSum (int[][] matrix) {
        // write code here
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] result = new int[m][n]; //创建一个一样的二维数组存放结果
        
        result[0][0] = matrix[0][0]; //第一行第一列数字
        
        //第一行的数据
        for(int i = 1;i < n;i++){
            result[0][i] = result[0][i-1] + matrix[0][i];
        }
        
        //第一列的数据
        for(int i = 1;i < m;i++){
            result[i][0] = result[i-1][0] + matrix[i][0];
        }
        
        //从第二行第二个的数据来源都是上方或者左方向,我们只需要计算他们和最小值求出
        for(int i = 1;i < m;i++){
            for(int j = 1;j < n;j++){
                result[i][j] = matrix[i][j]+Math.min(result[i][j-1],result[i-1][j]);
            }
        }
        return result[m-1][n-1];//二维数组最后一个数字就是最短距离
        }

矩阵的最小路径和

原文:https://www.cnblogs.com/fzstudy/p/14661916.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!