leetcode 不同路徑I II

2021-09-25 20:48:00 字數 1205 閱讀 4896

乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

問總共有多少條不同的路徑?

思路:

從起點 (x=0,y=0)(x=0,y=0)(x=0,y=0) 出發,下一步只能向右或者向下到達第二點,向右則為 (x+1,y)(x+1,y)(x+1,y) 向下則為 (x,y+1)(x,y+1)(x,y+1),一直到 (x=m,y=n)(x=m,y=n)(x=m,y=n) 這個點則為結束點視為一條路徑。

因此從起點到終點的所有路徑總數則為 222 個 以第二個點到終點的路徑數的總和。

//static int ve[101][101] = ;  //0s

vector> ve(101,vector(101,0)); //4s

class solution

};

乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?

class solution {

public:

int uniquepathswithobstacles(vector>& obstaclegrid) {

int r = obstaclegrid.size();

int c = obstaclegrid[0].size();

//obstaclegrid陣列儲存的是到達這一位置的路徑數

//如果第乙個節點處的值就為1,那機械人一步也走不了

if(obstaclegrid[0][0] == 1)

return 0;

obstaclegrid[0][0] = 1;

//從0,0 出發先看最邊上的這一列是否有障礙物,並且計算到邊上的某一點的路徑

for(int i=1; i複雜度分析

時間複雜度 : o(m×n)o(m \times n)o(m×n) 。長方形網格的大小是 m×nm \times nm×n,而訪問每個格點恰好一次。

空間複雜度 : o(1)o(1)o(1)。我們利用 obstaclegrid 作為 dp 陣列,因此不需要額外的空間。

LeetCode 不同路徑 i ii

q 乙個機械人在m n大小的地圖的左上角 起點,下圖中的標記 start 的位置 機械人每次向下或向右移動。機械人要到達地圖的右下角。終點,下圖中的標記 finish 的位置 可以有多少種不同的路徑從起點走到終點?備註 m和n小於等於100 a 典型動態規劃問題了。public int unique...

動態規劃 不同路徑(I,II

不同路徑 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 10...

不同路徑(LeetCode)

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...