原题链接:https://leetcode-cn.com/problems/minimum-path-sum/
class Solution {
// 动态规划的问题
// dp[i][j] 值表示 i,j 位置到 最右下角的最小数字和
public int minPathSum(int[][] grid) {
// 基础参数判断
if (grid == null || grid.length == 0 || grid[0].length == 0){
return 0;
}
// 初始化
int rows = grid.length;
int colums = grid[0].length;
int[][] dp = new int[rows][colums];
dp[0][0] = grid[0][0];
// 初始化第一列
for (int i = 1; i < rows; i++){
dp[i][0] = grid[i][0] + dp[i-1][0];
}
// 初始化第一行
for (int j = 1; j < colums; j++){
dp[0][j] = grid[0][j] + dp[0][j-1];
}
for (int i = 1; i < rows; i++){
for (int j = 1; j < colums; j++){
// 当前的和【状态转移方程】
dp[i][j] = grid[i][j] + Math.min(dp[i-1][j], dp[i][j-1]);
}
}
return dp[rows -1][colums-1];
}
}