【leetcode】Unique Paths II

来源:互联网 发布:mac导出日历 编辑:程序博客网 时间:2024/05/29 11:53

Follow up for "Unique Paths":

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[  [0,0,0],  [0,1,0],  [0,0,0]]

The total number of unique paths is 2.

Note: m and n will be at most 100.


Accept: 2ms, 动态规划

int dp[100][100];int uniquePathsWithObstacles(int **obstacleGrid, int m, int n){  if (obstacleGrid[m-1][n-1] == 1 || obstacleGrid[0][0] == 1) {    return 0;  }  for (int i = m - 1; i >= 0; --i) {    for (int j = n - 1; j >= 0; --j) {      if (i == m - 1 && j == n - 1) {        dp[i][j] = 1;        continue;      }      dp[i][j] = 0;      if (i < m - 1 && obstacleGrid[i + 1][j] == 0) {        dp[i][j] += dp[i + 1][j];      }      if (j < n - 1 && obstacleGrid[i][j + 1] == 0) {        dp[i][j] += dp[i][j + 1];      }    }  }  return dp[0][0];}


0 0