[leetcode]62_不同路径_无障碍版本

复制代码
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?

示例1
输入:m = 3, n = 7
输出:28
示例 2:
输入:m = 2, n = 3
输出:3
解释: 从左上角开始,总共有 3 条路径可以到达右下角。
向右 -> 向右 -> 向下
向右 -> 向下 -> 向右
向下 -> 向右 -> 向右
示例 3:
输入:m = 7, n = 3
输出:28
示例 4:
输入:m = 3, n = 3
输出:6
提示:
1 <= m, n <= 100
题目数据保证答案小于等于 2 * 10^9

解题方法:【动态规划】

复制代码
二维数组:n * m
递推公式:
dp[i][j]表示从"Start"走到(i,j)位置的路径数量
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
初始化:
第一行所有格仅一种路径
dp[i for i in range(n)][0] = 1
第一列所有格仅一种路径
dp[0][i for i in range(n)] = 1
复制代码
class Solution:
    def different_roads(self, m ,n):
        dp = [[0]* m for _ in range(n)]
        for i in range(m):
            dp[0][i] = 1
        for i in range(n):
            dp[i][0] = 1
        for i in range(n):
            for j in range(m):
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
        return dp[n - 1][m - 1]

if __name__ == '__main__':
    m, n = map(int, input().split())
    result = Solution().different_roads(m,n)
    print(result)

仅作为代码记录,方便自学自查自纠

相关推荐
mit6.82422 分钟前
dijk|tire+floyd+dp %
算法
独自破碎E37 分钟前
【总和拆分 + 双变量遍历】LCR_012_寻找数组的中心下标
数据结构·算法
WBluuue37 分钟前
Codeforces 1076 Div3(ABCDEFG)
c++·算法
u0109272711 小时前
模板编译期排序算法
开发语言·c++·算法
GIS瞧葩菜1 小时前
Cesium 轴拖拽 + 旋转圈拖拽 核心数学知识
人工智能·算法·机器学习
m0_686041611 小时前
C++中的适配器模式变体
开发语言·c++·算法
txzrxz1 小时前
结构体排序,双指针,单调栈
数据结构·算法·双指针算法·单调栈·结构体排序
AndrewHZ1 小时前
【AI黑话日日新】什么是AI智能体?
人工智能·算法·语言模型·大模型·llm·ai智能体
wWYy.1 小时前
算法:二叉树最大路径和
数据结构·算法
葱明撅腚1 小时前
利用Python挖掘城市数据
python·算法·gis·聚类