[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)

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

相关推荐
__AtYou__7 分钟前
Golang | Leetcode Golang题解之第423题从英文中重建数字
leetcode·golang·题解
XXXJessie9 分钟前
c++278函数指针
java·c++·算法
小胡不加班12 分钟前
2024.09.22 leetcode 每日一题
算法·leetcode·职场和发展
DdddJMs__13514 分钟前
C语言 | Leetcode C语言题解之第419题棋盘上的战舰
c语言·leetcode·题解
鱼跃鹰飞25 分钟前
大厂面试真题-Kafka如何保证消息不丢失
分布式·算法·面试·职场和发展·kafka
英雄史诗42 分钟前
支持向量机
算法·机器学习·支持向量机
勇敢滴勇1 小时前
【排序算法】插入排序_直接插入排序、希尔排序
c语言·数据结构·算法·排序算法
程序猿练习生1 小时前
C++速通LeetCode中等第25题-验证二叉搜索树(中序遍历堆栈迭代法)
开发语言·c++·leetcode
Ddddddd_1582 小时前
C++ | Leetcode C++题解之第429题N叉树的层序遍历
c++·leetcode·题解