leetcode 不同路徑 python3

2021-10-24 10:08:12 字數 1416 閱讀 9729

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

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

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

示例 1

:輸入: m =

3, n =

2輸出:

3解釋:

從左上角開始,總共有 3 條路徑可以到達右下角。

1. 向右 -

> 向右 -

> 向下

2. 向右 -

> 向下 -

> 向右

3. 向下 -

> 向右 -

> 向右

示例 2

:輸入: m =

7, n =

3輸出:28

1<= m, n <=

100題目資料保證答案小於等於 2*10

^9

#這裡的dp[i][j]代表到這裡的有多少條路徑

class

solution

:def

uniquepaths

(self, m:

int, n:

int)

->

int:

# 初始化為1,避免多餘的賦值,外層不使用*,否則淺拷貝內層可能會在賦值時候出現問題

dp =[[

1]*n for _ in

range

(m)]

for i in

range(1

, m)

:for j in

range(1

, n)

: dp[i]

[j]= dp[i]

[j -1]

+ dp[i -1]

[j]return dp[-1

][-1

]

"""排列組合,一定會有m+n-2次移動,其中向右m-1次移動,

向下n-1次移動,所以就是在(m+n-2)中選取(m-1)次移動出來

即c(m-1)(m+n-2)"""

class

solution

:def

uniquepaths

(self, m:

int, n:

int)

->

int:

return

int(math.factorial(m+n-2)

/math.factorial(m-1)

/math.factorial(n-1)

)

不同路徑(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...