由于前面已经做过了不少动态规划了,所以这个题很快能够找出状态转移方程
dp[i][j]=Min{dp[i-1][j],dp[i][j-1]}+arrays[i][j]
class Solution {
public int minPathSum(int[][] grid) {
if(grid.length==0)
return 0;
//二维数组不一定是正方形
int row=grid.length;
int column=grid[0].length;
int[][] dp = new int[row][column];
dp[0][0]=grid[0][0];
//从上到下从下到上都不能忽略边界值问题
for(int j=1;j<column;j++){
//第一行计算dp值
dp[0][j]=dp[0][j-1]+grid[0][j];
}
for(int i=1;i<row;i++){
dp[i][0]=dp[i-1][0]+grid[i][0];
for(int j=1;j<column;j++){
dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
return dp[row-1][column-1];
}
}