乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?
小結:動態規劃。這道題增加了障礙。
通用模式
class solution(object):
def uniquepathswithobstacles(self, obstaclegrid):
""":type obstaclegrid: list[list[int]]
:rtype: int
"""m = len(obstaclegrid)
n = len(obstaclegrid[0])
dp = [[0] * n for i in range(m)]
if not obstaclegrid[0][0]:
dp[0][0] = 1
for i in range(1, n):
if obstaclegrid[0][i]:
dp[0][i] = 0
else:
dp[0][i] = dp[0][i - 1]
for i in range(1, m):
if obstaclegrid[i][0]:
dp[i][0] = 0
else:
dp[i][0] = dp[i - 1][0]
for i in range(1, m):
for j in range(1, n):
if obstaclegrid[i][j]:
dp[i][j] = 0
else:
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
return dp[m - 1][n - 1]
leetcode 63不同路徑2
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?說明 m 和 n 的值均不超過 100。示例 1 輸入 0...
leetcode63 不同路徑2
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?設定乙個與網格同樣大小的dp矩陣,其中dp i j 表示有...
LeetCode63 不同路徑2
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?一樣的動態規劃,但是多了障礙物,其實只用把障礙物置為0就可...