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

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

相关推荐
YuTaoShao6 分钟前
【LeetCode 每日一题】1984. 学生分数的最小差值
算法·leetcode·排序算法
Aurora@Hui17 分钟前
FactorAnalysisTool 因子分析工具
人工智能·算法·机器学习
wen__xvn20 分钟前
基础算法集训第06天:计数排序
数据结构·算法·leetcode
(; ̄ェ ̄)。21 分钟前
机器学校入门(十三)C4.5 决策树,CART决策树
算法·决策树·机器学习
Ll130452529825 分钟前
Leetcode哈希表篇
算法·leetcode·散列表
独自破碎E31 分钟前
【字节面试手撕】大数加法
java·算法
鱼跃鹰飞33 分钟前
LeetCode热题100: 49.字母异位词分组
java·数据结构·算法·leetcode
myloveasuka1 小时前
3-8 译码器(正式型号74LS138、 74HC138、74HCT138 等))
笔记·算法·计算机组成原理·硬件
wen__xvn1 小时前
基础算法集训第17天:二分查找
算法·leetcode·职场和发展
myloveasuka1 小时前
MREQ̅ 信号
笔记·算法·计算机组成原理