剑指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]

你可能感兴趣的:(剑指offer)