由於前面已經做過了不少動態規劃了,所以這個題很快能夠找出狀態轉移方程
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];
}
}