一个机器人只能向下和向右移动, 每次只能移动一步, 设计一个算法求它从(0,0)移动到(m,n)有多少条路径。

'm' 与 'n' 不是下标内容:一个简单的动态规划解法:

  1. 创建一个大小为 (m+1)x(n+1) 的二维数组 'dp',初始化所有元素为 0
  2. 将第一行和第一列的元素全部设置为 1,表示从起点 (0,0) 到这些位置的路径数为 1
  3. 对于任意一个位置 (i,j),其路径数为从上方 (i-1,j) 和从左方 (i,j-1) 到达该位置的路径数之和,即 'dp[i][j] = dp[i-1][j] + dp[i][j-1]'
  4. 最终,'dp[m][n]' 就是从起点 (0,0) 到终点 (m,n) 的路径数

下面是 Python 代码实现:

def unique_paths(m: int, n: int) -> int:
    dp = [[0] * (n+1) for _ in range(m+1)]
    for i in range(1, m+1):
        dp[i][1] = 1
    for j in range(1, n+1):
        dp[1][j] = 1
    for i in range(2, m+1):
        for j in range(2, n+1):
            dp[i][j] = dp[i-1][j] + dp[i][j-1]
    return dp[m][n]

时间复杂度为 O(mn),空间复杂度为 O(mn)。

机器人路径计算:动态规划解法

原文地址: https://www.cveoy.top/t/topic/oemF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录