leetcode 63 不同路徑(2)

2021-09-24 03:12:21 字數 992 閱讀 7207

乙個機械人位於乙個 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就可...