题解 | #礼物的最大价值#

礼物的最大价值

https://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param grid int整型二维数组
# @return int整型
#
class Solution:
    def maxValue(self, grid: List[List[int]]) -> int:
        # write code here
        M = len(grid)
        N = len(grid[0])
        dp = [[0]*N for m in range(M)]

    # 记录当前位置的礼物的最大

        for i in range(0, len(grid)):
            for j in range(0, len(grid[0])):

                # 初始化第一行,第一列的元素,它不可能从上面,或者左边移动过来,所以说它的大小就是它最大的价值

                if i == 0 and j == 0:
                    print(grid[0][0])
                    dp[i][j] = grid[i][j]

                # 棋盘中非第一行,非第一列中的元素的最大的情况,应该取他上面一行或者左边一列的最大值加上自身的礼物价值

                elif len(grid) > i > 0 and len(grid[0]) > j > 0:
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]

                # 棋盘的第一行只能从左移动过去,从上面移动下来不可能

                elif i-1 < 0:
                    print("行列", i, j)
                    dp[i][j] = dp[i][j-1]+grid[i][j]

                # 棋盘的第一列,不可能从左边移动过来,所以只能从上面移动过来
                elif j-1 < 0:
                    dp[i][j] = dp[i-1][j] + grid[i][j]

        return dp[M-1][N-1]

全部评论

相关推荐

点赞 评论 收藏
分享
明天不下雨了:我靠2022了都去字节了还什么读研我教你****:你好,本人985电子科大在读研一,本科西南大学(211)我在字节跳动实习过。对您的岗位很感兴趣,希望获得一次投递机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务