class Solution:
def uniquePaths(self, m: int, n: int) -> int:
if m==0 or n==0:
return 0
#组合数学
return comb(m + n - 2, n - 1)
#动态规划
dp=[[0 for _ in range(n)] for _ in range(m)]
for i in range(m):
for j in range(n):
if i==0 or j==0:
dp[i][j]=1
else:
dp[i][j] = dp[i-1][j]+dp[i][j-1]
return dp[-1][-1]
- 初始化第一行和第一列都为1,因为机器人只有向右或者向下的两种选择,因此第一行和第一列都初始化为1
- 双层循环遍历网格,动态转移方程dp[i][j]=dp[i-1][j]+dp[i][j-1]
- dp[i][j]表示到(i,j)有多少条不同的路径
总结:比较简单的一个动态规划问题,需要确定的就是动态转移方程和初始状态。