题目

解题
可以拆解子问题 应该可以动态规划 由于 本身就是一个二维 解空间也是一个二维
from typing import *
def solution(grid: List[List[int]]):
    """
    动态规划
    """
    m = len(grid) #高
    n = len(grid[0]) #宽
    # 初始化 dp 数组
    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] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]
    return dp[m-1][n-1]