劍指offer 禮物的最大價值

2021-10-11 22:58:52 字數 809 閱讀 3723

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

示例 1:

輸入: [ [1,3,1], [1,5,1], [4,2,1] ]

輸出: 12

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

解題思路:

因為是篩選了動歸標籤出來的題,所以很容器就想到要用動歸來解了。而且題幹裡把動歸的推演公式也描述的非常清楚,直接上吧:

class solution 

int column = grid[0].length;

int dp = new int[row+1][column+1];

// 沒有必要設定result,右下角的一定是最大的

// int result = 0;

for(int i = 1; i < grid.length; i++)

}return dp[row][column];

}}

優化部分:

一開始用了乙個result值來記錄max,後來看了題解後發現並沒有必要,最右下角的一定是最大的

dp構建時多增加了一行一列,可以巧妙繞過邊界問題

題解最高讚是在grid原有陣列的基礎上做dp,可以減少空間複雜度

最高贊答:

class solution 

}

劍指Offer 禮物的最大價值

題目 在乙個m n的棋盤的每乙個格都放有乙個禮物,每個禮物都有一定價值 大於0 從左上角開始拿禮物,每次向右或向下移動一格,直到右下角結束。給定乙個棋盤,求拿到禮物的最大價值。例如,對於如下棋盤 1 10 3 8 12 2 9 6 5 7 4 11 3 7 16 5禮物的最大價值為1 12 5 7 ...

劍指offer 禮物的最大價值

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

劍指offer 禮物的最大價值

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