📅  最后修改于: 2023-12-03 15:11:43.497000             🧑  作者: Mango
在一个矩形网格中,给定起点和终点,求从起点到终点的路径数目。路径必须满足往右或往下行走。
使用动态规划算法来解决。
定义一个二维数组$dp[i][j]$表示从起点$(0,0)$到$(i,j)$的路径数目。
最终的答案即为$dp[m-1][n-1]$,其中$m$和$n$分别表示网格的行数和列数。
def unique_paths(m: int, n: int) -> int:
# 初始化dp数组
dp = [[1] * n] + [[1] + [0] * (n - 1) for _ in range(m - 1)]
# 动态规划
for i in range(1, m):
for j in range(1, n):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[m-1][n-1]
assert unique_paths(3, 7) == 28
assert unique_paths(3, 2) == 3