动态规划(矩阵路径)---矩阵的最小路径和

矩阵的最小路径和

64. Minimum Path Sum (Medium)

[[1,3,1],
 [1,5,1],
 [4,2,1]]
Given the above grid map, return 7. Because the path 1→3→1→1→1 minimizes 

题目描述:

  求从矩阵的左上角到右下角的最小路径和,每次只能向右和向下移动。

思路分析:

  动态规划思想,用dp[ i ] [ j ]表示从左上角到坐标为(i,j)元素的最小路径和。

则 dp[i] [j]=min(dp[i-1] [j],dp[i] [ j-1])+grid[i] [j]

代码:

public int minPathSum(int [][]grid){
    if(grid.length==0||grid==null)
        return 0;
    int [][]dp=new int [grid.length][grid[0].length];
    dp[0][0]=grid[0][0];
    for(int i=1;i<grid.length;i++){
        dp[i][0]=dp[i-1][0]+grid[i][0];
    }
    for(int j=1;j<grid[0].length;j++){
        dp[0][j]=dp[0][j-1]+grid[0][j];
    }
    for(int i=1;i<grid.length;i++){
        for(int j=1;j<grid[0].length;j++){
            dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
        }
    }
    return dp[grid.length-1][grid[0].length-1];
}
原文地址:https://www.cnblogs.com/yjxyy/p/11116384.html