禮物的最大價值

2022-09-17 02:33:12 字數 768 閱讀 6462

在乙個 m*n 的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物?

輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 12

解釋: 路徑 1→3→5→2→1 可以拿到最多價值的禮物

0 < grid.length <= 200

0 < grid[0].length <= 200

典型的動態規劃問題,狀態定義二維陣列dp[i][j],表示從左上角開始到當前位置的禮物的最大價值。

觀察**,dp[i][j]只能從上或者從左兩個方向中選取較大值再加上grid[i][j]得到,所以狀態轉義方程是:

dp(i,j)=max[dp(i,j−1),dp(i−1,j)]+grid(i,j)

因此dp可以多擴列一行一列,預設全是0,從dp[1][1]開始,當前禮物的最大價值就是

max(當前元素的上一行元素,當前元素的左鄰元素)+grid[i][j]

最終返回最後的狀態即可。

class

solution

}return dp[grid.length]

[grid[0]

.length];}

}

禮物的最大價值

題目 在乙個mxn的棋盤的每乙個都放有乙個禮物,每個禮物都有一定的價值 價值大於0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格,知道到達棋盤的右下角。給定乙個棋盤及其上面的禮物,請計算你最多能達到多少價值的禮物。方法一 動態規劃 二維陣列儲存 int getmaxvalue ...

禮物的最大價值

題目 在乙個m n的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值 價值大於0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向左或者向下移動一格直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物,請計算你最多能拿到多少價值的禮物?動態規劃,優化前 int getmaxvalue const in...

禮物的最大價值

面試題47 禮物的最大價值 題目 在乙個m n的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值 價值大於0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或 者向下移動一格直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物,請計 算你最多能拿到多少價值的禮物?static int get ma...