劍指Offer 禮物的最大價值

2021-09-25 12:22:31 字數 872 閱讀 3603

題目:在乙個m*n的棋盤的每乙個格都放有乙個禮物,每個禮物都有一定價值(大於0)。從左上角開始拿禮物,每次向右或向下移動一格,直到右下角結束。給定乙個棋盤,求拿到禮物的最大價值。例如,對於如下棋盤

1    10   3    8

12 2 9 6

5 7 4 11

3 7 16 5

禮物的最大價值為1+12+5+7+7+16+5=53。

思路:

方法一:利用動態規劃,通過格仔(i-1,j)或者(i,j-1),f(i,j)=max(f(i-1,j),f(i,j-1))+gift[i,j].gift[i,j]表示座標為(i,j)的格仔裡的禮物價值。

遞迴的**有大量的重複計算,所以基於迴圈來寫**。中間結果利用乙個二維陣列來儲存。

**如下:

//方法一:動態規劃

public static int getmaxvaule(int values)

}int maxvlaue=maxvalues[rows-1][cols-1];

return maxvlaue;

}

方法二:優化方法一的**;用乙個一維陣列來代替前面的二維矩陣。

//方法二:優化方法一

public static int getmaxvaule2(int values)

}int maxvalue=maxvalues[cols-1];

return maxvalue;

}

劍指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 輸出 ...

劍指offer 禮物的最大價值

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