机器人路径计算:动态规划解法
一个机器人只能向下和向右移动, 每次只能移动一步, 设计一个算法求它从(0,0)移动到(m,n)有多少条路径。
'm' 与 'n' 不是下标内容:一个简单的动态规划解法:
- 创建一个大小为 (m+1)x(n+1) 的二维数组 'dp',初始化所有元素为 0
- 将第一行和第一列的元素全部设置为 1,表示从起点 (0,0) 到这些位置的路径数为 1
- 对于任意一个位置 (i,j),其路径数为从上方 (i-1,j) 和从左方 (i,j-1) 到达该位置的路径数之和,即 'dp[i][j] = dp[i-1][j] + dp[i][j-1]'
- 最终,'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 著作权归作者所有。请勿转载和采集!