乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
問總共有多少條不同的路徑?
說明:m 和 n 的值均不超過 100。
示例 1:
輸入: m = 3, n = 2
輸出: 3
解釋:從左上角開始,總共有 3 條路徑可以到達右下角。
向右 -> 向右 -> 向下
向右 -> 向下 -> 向右
向下 -> 向右 -> 向右
示例 2:
輸入: m = 7, n = 3
輸出: 28
我的**就很厲害了,時間效率很高。
首先宣告乙個陣列,用來儲存當前節點的路徑個數。
遞迴呼叫,當x, y超出邊界時,這條路徑不通,返回0。當x, y是終點時,是一條路,返回1。
為了提高效率,如果這個點已經被計算過了,直接返回結果。
當前節點等於向右走當個數 + 向下走的個數。
把當前節點的結果記錄到陣列中,返回當前節點路徑個數。
class
solution
public
intuniquepaths
(int m,
int n,
int curm,
int curn,
int[
] store)
int right =
uniquepaths
(m, n, curm +
1, curn, store)
;int down =
uniquepaths
(m, n, curm, curn +
1, store)
; store[curm]
[curn]
= right + down;
return right + down;
}}
不同路徑(LeetCode)
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...
不同路徑(leetcode)
題目 物體怎樣從左上角移動到右下角,其中1表示有障礙,不能行走。思路 知道整個方框的行和列。對第一行和第一列進行填充1,當碰到1 障礙 填充0。本題可以被視為乙個動態規劃的問題,從上到下,從左到右,其中到達乙個終點的路徑總是左邊路徑 上面路徑。即 d p i j dp i 1 j dp i j 1 ...
leetcode不同路徑
1.深度優先搜尋 從finish點開始,往回走,每次是往上走,往右走,當回到0,0點時,路徑數量加1 如下 class solution void dfs int m,int n,int r,int c 但是這種方法可能會超時 2.利用數學公式 地圖矩陣為m行,n列,從左上角到右下角一共需要走m n...