相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;//获取行
int n = grid[0].length;//获取列
int[][] dp = new int[m][n];//创建动态规划数组,用于记录当走到这个位置,数字的最小总和
dp[0][0] =grid[0][0];//初始化起点
for (int i = 1; i < m; i++) {//赋值首列的值
dp[i][0] = dp[i-1][0]+grid[i][0];//当前动态规划数组元素的总和 是上一行第一列的总和+当前位置的的数字
}
for (int j = 1; j < n; j++) {//赋值首列的值
dp[0][j]=dp[0][j-1]+grid[0][j];//当前动态规划数组元素的总和 是首行上一列的总和+当前位置的的数字
}
for (int i = 1; i < m; i++) {//遍历
for (int j = 1; j < n; j++) {
//当前动态规划数组元素的总和 是当前位置元素的上一行的元素和当前元素的左列 的最小的值 +当前位置的的数字
dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
return dp[m-1][n-1];//返回终点值
}
}