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