矩陣的最小路徑和
[[1,3,1],
[1,5,1],
[4,2,1]]
Given the above grid map, return 7. Because the path 1→3→1→1→1 minimizes
題目描述:
求從矩陣的左上角到右下角的最小路徑和,每次只能向右和向下移動。
思路分析:
動態規划思想,用dp[ i ] [ j ]表示從左上角到坐標為(i,j)元素的最小路徑和。
則 dp[i] [j]=min(dp[i-1] [j],dp[i] [ j-1])+grid[i] [j]
代碼:
public int minPathSum(int [][]grid){
if(grid.length==0||grid==null)
return 0;
int [][]dp=new int [grid.length][grid[0].length];
dp[0][0]=grid[0][0];
for(int i=1;i<grid.length;i++){
dp[i][0]=dp[i-1][0]+grid[i][0];
}
for(int j=1;j<grid[0].length;j++){
dp[0][j]=dp[0][j-1]+grid[0][j];
}
for(int i=1;i<grid.length;i++){
for(int j=1;j<grid[0].length;j++){
dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
return dp[grid.length-1][grid[0].length-1];
}