劍指offer47 禮物的最大價值

2021-10-03 03:28:48 字數 1321 閱讀 4713

題目描述:

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

#方法1:建立二維陣列,動態規劃法

def getmaxvalue(values,rows,cols):

#values 是一維陣列

if not values or rows<=0 or cols<=0:

return 0

maxvalues=[[0 for i in range(cols)] for j in range(rows)]

for i in range(rows):

for j in range(cols):

up=0

left=0

if i >0:

up=maxvalues[i-1][j]

if j>0:

left=maxvalues[i][j-1]

maxvalues[i][j]=max(left,up)+values[i*cols+j]

print(maxvalues)

return maxvalues[rows-1][cols-1]

values=[1,10,3,8,12,2,9,6,5,7,4,11,3,7,16,5]

getmaxvalue(values,4,4)

#方法2:建立一維陣列,動態規劃法

def getmaxvalue(values,rows,cols):

#values 是一維陣列

if not values or rows<=0 or cols<=0:

return 0

maxvalues=[0]*cols

for i in range(rows):

for j in range(cols):

up=0

left=0

if i >0:

up=maxvalues[j]

if j>0:

left=maxvalues[j-1]

maxvalues[j]=max(left,up)+values[i*cols+j]

print(maxvalues)

return maxvalues[cols-1]

values=[1,10,3,8,12,2,9,6,5,7,4,11,3,7,16,5]

getmaxvalue(values,4,4)

劍指offer(47):禮物的最大值(動態規劃詳解,python版)

劍指offer 47 禮物的最大價值

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

劍指offer 47 禮物的最大價值

在乙個m x n的棋盤的每乙個字都放有乙個禮物,每個禮物都有一定的價值 價值大於0 可以從棋盤的左上角開始拿格仔裡的禮物,並每次向左或向下移動一格,直到到達棋盤的右下角。給定乙個棋盤及棋盤上面的禮物,計算出最多能拿到多少價值的禮物。首先定義乙個函式f i,j 表示到達座標為 i,j 時能拿到禮物的總...

劍指offer47 禮物的最大價值

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