由於機械人只可以向右和向下移動,所以我們要到第i行第j列,只可以由第i-1行第j列和第i行第j-1列移動一步得到,因此要到第i行第j列的方案數就是到第i-1行第j列的方案數和到第i行第j-1列的方案數之和。如果用dp[i][j]表示到第i行第j列的方案數,我們可以得到狀態轉移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1],得到狀態轉移方程後,我們還需要做一些初始化方便遞推。可以發現第0行和第0列的所有方案數都是1(只可能是從起點開始不斷向下或向右移動得到). 這樣我們遞推的時候只需從第1行第1列開始遞推到第m-1行n-1列。
class solution
for(int i = 0; i < n; ++i)
for(int i = 1; i < m; ++i)
}return dp[m - 1][n - 1]; //右下角是第m - 1行第n - 1列}};
Leetcode 62 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...
leetcode 62 不同路徑
時間複雜度o n2 def uniquepaths m,n 計算路徑的個數 memo 0 for j in range n for i in range m for i in range m for j in range n if i 0 and j 0 memo i j 1 elif j 0 me...
LeetCode 62 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...