leetcode 63 不同路徑 II

2021-09-29 10:00:22 字數 1207 閱讀 9401

乙個機械人位於乙個 m∗n

m * n

m∗n 網格的左上角 (起始點在下圖中標記為「st

art」

「start」

「start

」 )。

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

nish

」「finish」

「finis

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

網格中的障礙物和空位置分別用 1

11 和 0

00 來表示。

說明:m

mm 和 n

nn 的值均不超過 100

10010

0。示例 1:

輸入:[

[0,0,0],

[0,1,0],

[0,0,0]

]輸出: 2

解釋:3∗3

3*33∗

3 網格的正中間有乙個障礙物。

從左上角到右下角一共有 2 條不同的路徑:

向右 -> 向右 -> 向下 -> 向下

向下 -> 向下 -> 向右 -> 向右

解題思路:使用動態規劃,用乙個二維陣列dp[i][j]儲存狀態變數。

c++**如下所示:

class

solution

for(

int i=

1;i) # 初始化二維陣列的第一行

for(

int i=

1;i) # 遍歷二維陣列

if(a[i-1]

[j]==

1|| a[i]

[j-1]==

1) # 狀態轉移方程

dp[i]

[j]=

max(dp[i-1]

[j],dp[i]

[j-1])

;else # 狀態轉移方程

dp[i]

[j]= dp[i-1]

[j]+ dp[i]

[j-1];

}}return dp[hang-1]

[lie-1]

; # 返回終點到起點的所有可能路徑和}};

LeetCode63 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...

LeetCode 63 不同路徑

看到這個題目的時候想到的是通過深度優先搜尋演算法進行求解,找到每一條能夠到達finish的路徑,並計數 1,最後得出的計數值即為解。程式設計後提交對於部分測試用例超時,程式如下 class solution if x 1 n 1 if y 1 m 1 int uniquepathswithobsta...

Leetcode 63 不同路徑

描述 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說...