一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲「Start」 )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲「Finish」)。 問總共有多少條不一樣的路徑?
數組
舉例請看圖 bash
示例 1:ui
輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開始,總共有 3 條路徑能夠到達右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右
複製代碼
示例 2:spa
輸入: m = 7, n = 3
輸出: 28
複製代碼
function uniquePaths(m, n) {
if (m == 1 || n == 1) {
return 1
}
return uniquePaths(m-1, n) + uniquePaths(m, n-1)
}
複製代碼
function uniquePaths(m, n) {
// 初始化一個二維數組
let dp = []
for (let i = 0; i < m; i++) {
let temp = []
dp.push(temp)
}
// 遍歷計算出全部dp的值
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (i == 0 || j == 0) {
dp[i][j] = 1
} else {
dp[i][j] = dp[i-1][j] + dp[i][j-1]
}
}
}
return dp[m-1][n-1]
}
複製代碼