Leetcode Link: 剑指 Offer 47. 礼物的最大价值 - 力扣(LeetCode)

题目

解法一

思路: 当前位置只收到左边和上边的影响 dp[i][j] 表示走到grid[i][j]时的礼物最大价值。

题解

class Solution:
    def maxValue(self, grid: List[List[int]]) -> int:
        dp = [[0 for _ in range(len(grid[0]))] for _ in range(len(grid))]
        dp[0][0] = grid[0][0]
        for i in range(1,len(grid[0])):
            dp[0][i] = dp[0][i-1] + grid[0][i]
        for i in range(1,len(grid)):
            dp[i][0] = dp[i-1][0] + grid[i][0]
 
        for i in range(1,len(grid)):
            for j in range(1, len(grid[0])):
                dp[i][j] = max(dp[i-1][j], dp[i][j-1])+grid[i][j]
        
        return dp[-1][-1]

可以进一步许做状态压缩。

只收到本行和上一行的影响。

启发和联系