代码实现:
int uniquePathsWithObstacles(int **obstacleGrid, int obstacleGridSize, int *obstacleGridColSize) { int x = obstacleGridSize, y = obstacleGridColSize[0]; int dp[x][y]; memset(dp, 0, sizeof(int) * x * y); for (int j = 0; j < y && obstacleGrid[0][j] == 0; j++) { dp[0][j] = 1; } for (int i = 0; i < x && obstacleGrid[i][0] == 0; i++) { dp[i][0] = 1; } for (int i = 1; i < x; i++) { for (int j = 1; j < y; j++) { if (obstacleGrid[i][j] == 1) { continue; } dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; } } return dp[x - 1][y - 1]; }