题目描述
一个机器人位于一个 m x n 网格的左上角(起始点在下图中标记为 Start)。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 Finish)。
问总共有多少条不同的路径?
示例
示例 1:
1 | 输入:m = 3, n = 7 |
示例 2:
1 | 输入:m = 3, n = 2 |
示例 3:
1 | 输入:m = 7, n = 3 |
示例 4:
1 | 输入:m = 3, n = 3 |
提示
1 <= m, n <= 100- 机器人只能向下或向右移动
解题思路
这是一道经典的动态规划问题,也可以使用数学中的组合数来解决。
动态规划
定义 dp[i][j] 表示:从左上角到达位置 (i, j) 的不同路径数。
状态转移方程
机器人只能从上方或左方到达当前位置,因此:
$$
dp[i][j] = dp[i-1][j] + dp[i][j-1]
$$
边界条件
- 第一行
dp[0][j] = 1(只能从左向右移动) - 第一列
dp[i][0] = 1(只能从上向下移动)
代码实现
1 | class Solution: |