乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
問總共有多少條不同的路徑?
例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?
說明:m 和 n 的值均不超過 100。
示例 1:
輸入: m = 3, n = 2
輸出: 3
解釋:從左上角開始,總共有 3 條路徑可以到達右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右
動態規劃
f[m][n] = f[m-1][n] + f[m][n-1]
attention
設二維陣列時要設成 path_map = [[1 for i in range(m)] for j in range(n)] 的形式,不能是 [[none] * m] * n 的形式,因為這樣設的陣列給某個數賦值時會廣播到這一列的所有的數
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
# f[m][n] = f[m-1][n] + f[m][n-1]
if m==
1or n==1:
return
1 path_map =[[
1for i in
range
(m)]
for j in
range
(n)]
path_map[0]
[0]=
0for i in
range(0
, n-1)
:for j in
range(0
, m-1)
: path_map[i+1]
[j+1
]= path_map[i+1]
[j]+ path_map[i]
[j+1
]return path_map[-1
][-1
]
優化:空間複雜度為o(n)
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
cur =[1
]* n
for i in
range(1
, m)
:for j in
range(1
, n)
: cur[j]
+= cur[j-1]
return cur[-1
]
62 不同路徑
一 題目 機械人位於乙個 m x n 網格的左上角,在下圖中標記為 start 開始 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角,在下圖中標記為 finish 結束 問有多少條不同的路徑?例如,上圖是乙個3 x 7網格。有多少可能的路徑?注意 m 和 n 的值均不超過 100。二...
62 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...
62 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...