创见博客
不同路径
七崽爱吃小饼干2026/02/09阅读 0

不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

codeType
输入:m = 3, n = 7
输出:28

示例 2:

codeType
输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

codeType
输入:m = 7, n = 3
输出:28

示例 4:

codeType
输入:m = 3, n = 3
输出:6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 10

解法

ts
function uniquePaths(m: number, n: number): number {
    // dp[i][j]表示到达i,j的路径数
    // dp[i][j] = dp[i-1][j] + dp[i][j-1]
    const dp = new Array(n).fill(0).map(() => new Array(m).fill(0))
    for(let i = 0; i < n; i++){
        for(let j = 0; j < m; j++){
            if(i === 0 && j === 0){
                dp[i][j] = 1
                continue
            }
            dp[i][j] = (i === 0 ? 0 : dp[i - 1][j]) + (j === 0 ? 0 : dp[i][j - 1])
        }
    }
    return dp[n - 1][m - 1]
};
评论
0/100