劍指offer 禮物的最大價值

題目

題目描述
在一個 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。

思路

DP+滾動數組

代碼

# -*- coding:utf-8 -*-

class Bonus:
    def getMost(self, board):
        # write code here
        dp = [0 for i in range(len(board[0]))]
        for i in range(len(board)):
            dp[0] += board[i][0]
            for j in range(1, len(board[0])):
                dp[j] = max(dp[j - 1], dp[j]) + board[i][j]
        return dp[len(board[0]) - 1]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章