1、不同路徑 i:**leetcode62題
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
問總共有多少條不同的路徑?
例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?
說明:m 和 n 的值均不超過 100。
class2、不同路徑 ii:**leetcode63題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
乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?
網格中的障礙物和空位置分別用1
和0
來表示。
說明:m 和 n 的值均不超過 100。
示例 1:
輸入:[ [0,0,0],
[0,1,0],
[0,0,0]
]輸出: 2
解釋:3x3 網格的正中間有乙個障礙物。
從左上角到右下角一共有
2
條不同的路徑:1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右
classsolution:
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。示例 ...