題目:在乙個m*n的棋盤的每乙個格都放有乙個禮物,每個禮物都有一定價值(大於0)。從左上角開始拿禮物,每次向右或向下移動一格,直到右下角結束。給定乙個棋盤,求拿到禮物的最大價值。例如,對於如下棋盤
禮物的最大價值為1+12+5+7+7+16+5=53。1 10 3 8
12 2 9 6
5 7 4 11
3 7 16 5
思路:
方法一:利用動態規劃,通過格仔(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 輸出 ...