// 最小路径和-动态规划
// 输入: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];
}