“不同的路径” 的跟进问题:
现在考虑网格中有障碍物,那样将会有多少条不同的路径?
网格中的障碍和空位置分别用 1 和 0 来表示。
样例
Example 1:
Input: [[0]]
Output: 1
Example 2:
Input: [[0,0,0],[0,1,0],[0,0,0]]
Output: 2
Explanation:
Only 2 different path.
注意事项
m 和 n 均不超过100
class Solution {
public:
/**
* @param obstacleGrid: A list of lists of integers
* @return: An integer
*/
int uniquePathsWithObstacles(vector<vector<int>> &obstacleGrid) {
// write your code here
int m=obstacleGrid.size();
int n=obstacleGrid[0].size();
if(obstacleGrid[0][0]||obstacleGrid[m-1][n-1]) return 0;
int dp[100][100];
memset( dp, 0, sizeof( dp ));
if(!obstacleGrid[0][0])dp[0][0]=1;
for (int i = 0; i < m; i++) {
/* code */
for (int j = 0; j < n; j++) {
/* code */
if(i-1>=0&&!obstacleGrid[i-1][j]) dp[i][j]+=dp[i-1][j];
if(j-1>=0&&!obstacleGrid[i][j-1]) dp[i][j]+=dp[i][j-1];
}
}
return dp[m-1][n-1];
}
};