劍指offer 47 禮物的最大價值

2021-09-20 18:53:41 字數 771 閱讀 2516

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

首先定義乙個函式f(i,j)表示到達座標為(i,j)時能拿到禮物的總和的最大值。要想到達座標為的格仔有兩條路徑:通過格仔(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]的格仔裡禮物的價值。建立乙個輔助二維陣列maxvalue,陣列中座標為[i,j]的元素表示到達作為為[i,j]的格仔時能拿到禮物價值總和的最大值,最終返回最後乙個格仔的大小即可。

**如下:

#include#include#includeint getmaxvalue(int *values, int rows, int cols)

int **maxvalue = (int **)malloc(rows*sizeof(int*));

for (int i = 0; i < cols; i++)

for (int i = 0; i < rows; i++)

else

} }int maxvalue1 = maxvalue[rows -1][cols-1];

for (int i = 0; i < cols; i++)

free(maxvalue);

return maxvalue1;

}

劍指offer 47 禮物的最大價值

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

劍指offer47 禮物的最大價值

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

劍指offer47 禮物的最大價值

題目描述 在乙個m n的棋盤的每一格都放乙個禮物,每個禮物都有一定的價值 價值大於0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向左或向下移動一格,直到到達棋盤的右下角。給定乙個棋盤及其上邊的禮物,請計算你最多能拿多少價值的禮物。方法1 建立二維陣列,動態規劃法 def getmaxvalue ...