Skip to content

62. 不同路径

一个机器人位于一个m x n网格的左上角。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问总共有多少条不同的路径?

示例:

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

解题思路

dp[i][j] = dp[i-1][j] + dp[i][j-1]

对于第一行 dp[0][j] 和第一列 dp[i][0],由于都是在边界,所以只能为 1

参考答案
ts
function uniquePaths(m: number, n: number): number {
  const dp = new Array(m).fill(0).map(() => new Array(n).fill(0));
  // 第一行只能为 1
  for (let i = 0; i < m; i++) {
    dp[i][0] = 1;
  }
  // 第一列只能为 1
  for (let j = 0; j < n; j++) {
    dp[0][j] = 1;
  }
  // 填充剩下的矩阵
  for (let i = 1; i < m; i++) {
    for (let j = 1; j < n; j++) {
      dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
    }
  }
  return dp[m - 1][n - 1];
}