63. 不同路径Ⅱ

题目链接:63. 不同路径 II - 力扣(LeetCode)

思路

如果当前网格有障碍物,那么无法到达;如果它的左边和/或上面格子有障碍物,就少了相应的到达渠道,基本思路和上道路径题一致:

代码随想录算法训练营第四十二天(动态规划篇)|62. 不同路径-CSDN博客

代码实现

import numpy as np

class Solution(object):

def uniquePathsWithObstacles(self, obstacleGrid):

m, n = np.shape(obstacleGrid)[0], np.shape(obstacleGrid)[1]

dp = np.zeros((m,n))

if obstacleGrid[m - 1][n - 1] == 1 or obstacleGrid[0][0] == 1:

return 0

# 考虑第一排,障碍物右边的格子都去不了

for col in range(n):

if obstacleGrid[0][col] == 0:

dp[0][col] = 1

else:

break

# 考虑第一列,障碍物下面的各自都到不了

for row in range(m):

if obstacleGrid[row][0] == 0:

dp[row][0] = 1

else:

break

for row in range(1, m):

for col in range(1, n):

if obstacleGrid[row][col] == 1:

continue

else:

dp[row][col] = dp[row-1][col] + dp[row][col-1]

return int(dp[m-1][n-1])

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: