最小路径和-动态规划

21 阅读1分钟

// 最小路径和-动态规划  
// 输入:grid = [[1,3,1],[1,5,1],[4,2,1]]  
// 输出:7  
// 解释:因为路径 1→3→1→1→1 的总和最小。  
public static int minPathSum(int[][] grid){  
    for (int i = 0; i <grid.length ; i++) {  
    for (int j = 0; j <grid[0].length ; j++) {  
        if(i==0&&j==0)continue;  
        // 前一个路径和+当前的路径  
        else if(i==0)grid[i][j]=grid[i][j-1]+grid[i][j];  
        else if(j==0)grid[i][j]=grid[i-1][j]+grid[i][j];  
        // 前一个里面最小的一个路径和+当前的路径  
        else grid[i][j]=Math.min(grid[i-1][j],grid[i][j-1])+grid[i][j];  
        }  
    }  
    return grid[grid.length-1][grid[0].length-1];  
}