#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param grid int整型二维数组 
# @return int整型
#
class Solution:
    def maxValue(self , grid: List[List[int]]) -> int:
        # write code here
        m, n = len(grid), len(grid[0])
        dp = [[0] * (n) for _ in range(m)]
        dp[0][0] = grid[0][0]
        for i in range(1, m): #初始化
            dp[i][0] = dp[i-1][0] + grid[i][0] # 第一列
        for j in range(1, n):
            dp[0][j] = dp[0][j-1] + grid[0][j] # 第一行
        for i in range(1, m):
            for j in range(1, n):
                dp[i][j] = grid[i][j] + max(dp[i-1][j], dp[i][j-1]) # 状态转移方程
        return dp[-1][-1]