0062:不同路径(★)
目录
题目
一个机器人位于一个 m x n
网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
示例 1:
输入:m = 3, n = 7 输出:28
示例 2:
输入:m = 3, n = 2 输出:3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向下 -> 向下 2. 向下 -> 向下 -> 向右 3. 向下 -> 向右 -> 向下
示例 3:
输入:m = 7, n = 3 输出:28
示例 4:
输入:m = 3, n = 3 输出:6
提示:
1 <= m, n <= 100
- 题目数据保证答案小于等于
2 * 109
相似问题:
- 0063:不同路径 II
- 0064:最小路径和
- 0174:地下城游戏
- 2304:网格中的最小路径代价(1658 分)
- 2087:网格图中机器人回家的最小代价(1743 分)
- 2400:恰好移动 k 步到达某一位置的方法数目(1751 分)
- 2435:矩阵中和能被 K 整除的路径(1951 分)
分析
#1
典型的二维 dp,为了方便,可以增加一行一列作为哨兵。
|
|
35 ms
#2
dp[i][j] 只依赖于 dp[i-1][j] 和 dp[i][j-1],可以优化为一维数组。
解答
|
|
41 ms
*附加
还可以直接用排列组合解决:
- 机器人要到达右下角,要走 m+n-2 步,其中 m-1 步向下,n-1 步向右
- 路径一一对应于由 m-1 个’下’和 n-1 个’右’组成的序列
- 路径数即为 m+n-2 中选 m-1 个的方案数
|
|
35 ms