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

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

相关推荐
愈谦卑20 分钟前
数据结构:排序
数据结构·算法·排序算法
好记性+烂笔头29 分钟前
hot100_108. 将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
tt55555555555540 分钟前
每日一题——主持人调度(二)
c语言·数据结构·算法·leetcode·八股文
技术蔡蔡1 小时前
Android字节码处理-函数耗时统计揭秘
算法·面试
Felven1 小时前
B. Skibidus and Ohio
算法
yonuyeung1 小时前
代码随想录算法【Day54】
java·数据结构·算法
敲上瘾2 小时前
基础dp——动态规划
java·数据结构·c++·python·算法·线性回归·动态规划
西猫雷婶2 小时前
python学智能算法(三)|模拟退火算法:深层分析
算法·机器学习·模拟退火算法
张有志_2 小时前
STL容器终极解剖:C++ vector源码级实现指南 | 从内存分配到异常安全的全流程避坑
c语言·c++·算法·开源·visual studio
mvufi3 小时前
day58 第十一章:图论part08
数据结构·算法·图论