剑指offer47:礼物的最大价值

题目描述:

在一个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)

 https://blog.csdn.net/dugudaibo/article/details/79678890  剑指offer(47):礼物的最大值(动态规划详解,python版)

发布了86 篇原创文章 · 获赞 1 · 访问量 8236

猜你喜欢

转载自blog.csdn.net/a1272899331/article/details/104453706