演算法題10 不同路徑問題

2022-04-23 02:17:16 字數 1779 閱讀 7822

1、不同路徑 i:**leetcode62題

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

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

例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?

說明:m 和 n 的值均不超過 100。

class

solution:

defuniquepaths(self, m, n):

""":type m: int

:type n: int

:rtype: int

"""aux=[[1 for i in range(n)] for i in

range(m)]

for i in range(1,m):

for j in range(1,n):

aux[i][j]=aux[i][j-1]+aux[i-1][j]

return aux[-1][-1]

#return math.factorial(m+n-2)/math.factorial(m-1)/math.factorial(n-1) #方法2

2、不同路徑 ii:**leetcode63題

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

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

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

網格中的障礙物和空位置分別用10來表示。

說明:m 和 n 的值均不超過 100。

示例 1:

輸入:

[  [0,0,0],

[0,1,0],

[0,0,0]

]輸出: 2

解釋:3x3 網格的正中間有乙個障礙物。

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

1. 向右 -> 向右 -> 向下 -> 向下

2. 向下 -> 向下 -> 向右 -> 向右

class

solution:

defuniquepathswithobstacles(self, obstaclegrid):

""":type obstaclegrid: list[list[int]]

:rtype: int

"""m=len(obstaclegrid)

n=len(obstaclegrid[0])

res=[[1 for i in range(n)] for j in

range(m)]

if obstaclegrid[0][0]==1:

return

0

for i in

range(m):

for j in

range(n):

if obstaclegrid[i][j]==1:

res[i][j]=0

else

:

if i==0:

res[i][j]=res[i][j-1]

elif j==0:

res[i][j]=res[i-1][j]

else

: res[i][j]=res[i-1][j]+res[i][j-1]

return res[-1][-1]

演算法 不同路徑問題

2 不同路徑 ii 62.不同路徑 本問題是動態規劃的乙個比較經典的題目,和跳台階問題本質上是一樣的,只是跳的位置不一樣而已。乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish ...

刷題篇 不同路徑問題

不同路徑 leetcode 62.不同路徑 leetcode 63.不同路徑 ii 是經典的動態規劃問題,從網格中找到從初始位置到結束位置的所有可能路徑。動態規劃問題可以理解成選擇問題,我們怎麼去選擇從而得到需要的解。另外需要考慮其中的細節,如邊界等。1.不同路徑 乙個機械人位於乙個 m x n 網...

LeetCode演算法題62 不同路徑解析

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