牛客網題目:minimum-path-sum 利用動態規劃的思想

題目描述以下:數組

牛客網題目:minimum-path-sum   利用動態規劃的思想

動態規劃的解法:
1.狀態的定義
2.狀態轉換方程
3.初始值
4.返回值
ide

就本題而言:
grid[][]爲原數組
```
1.狀態的定義 F[i][j]表示從F[0][0]到該位置所經歷的最小路徑和
2.狀態轉換方程 F[i][j]=min(F[i][j-1],F[i-1][j])+grid[i][j]
3.初始值 F[0][0]=grid[0][0]
4.返回值 F[m-1][n-1]
3d

 
 

連接:https://www.nowcoder.com/questionTerminal/23462ed010024fcabb7dbd3df57c715e?toCommentId=6010099
來源:牛客網code

public class Solution{
//先對最左一列和最上一行特殊處理,由於這樣的一列和一行中每一個元素的來路只有一條,它是固定的。
//而後剩下的內層的矩形框中,每一個元素的來路可能來自於左面元素,也有可能來自於上面元素。再加上
//當前元素值就是走到該位置經歷的路徑最小和
     public int minPathSum(int[][] grid) {
     int m=grid.length;
        int n=grid[0].length;
         if(m==0||n==0){
             return 0;
         }
        int[][] minimumPathSum=new int[m][n];
         minimumPathSum[0][0]=grid[0][0];
        for (int i=1;i<m;i++){
           minimumPathSum[i][0]=grid[i][0]+minimumPathSum[i-1][0];
        }//lie
        for (int j=1;j<n;j++){
            minimumPathSum[0][j]=grid[0][j]+minimumPathSum[0][j-1];
        }
        for (int i=1;i<m;i++){
            for (int j=1;j<n;j++){
                minimumPathSum[i][j]=Math.min(minimumPathSum[i][j-1],minimumPathSum[i-1][j])+grid[i][j];
            }
        }
        return minimumPathSum[m-1][n-1];
     }
}
相關文章
相關標籤/搜索