# # # @param obstacleGrid int整型二维数组 # @return int整型 # class Solution: def uniquePathsWithObstacles(self , obstacleGrid ): # write code here # dp[i][j]为走到(i,j)有多少路径 # dp[0] = 1,dp[][0]=1 # 核心递推公式是什么呢? # dp[i][j] = dp[i-1][j]+dp[i][j-1] # if obstacleGrid[i][j]==1:dp[i][j]=0 # else:dp[i][j] = dp[i-1][j]+dp[i][j-1] # if o[0][0]==1 or o[n-1][m-1]==1:return 0 n,m = len(obstacleGrid),len(obstacleGrid[0]) if obstacleGrid[0][0]==1 or obstacleGrid[n-1][m-1]==1: return 0 dp = [[0]*(m) for _ in range(n)] dp[0][0] = 1 for i in range(n): for j in range(m): if obstacleGrid[i][j] == 1: dp[i][j] = 0 elif i == 0 and j != 0: dp[i][j] = dp[i][j-1] elif j==0 and i!=0: dp[i][j] = dp[i-1][j] elif i>0 and j>0: dp[i][j] = dp[i-1][j]+dp[i][j-1] return dp[n-1][m-1]