【题目描述】
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。
【解答】
与62题异曲同工
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m=obstacleGrid.size();
if (m==0) return 0;
vector<int> v=obstacleGrid[0];
int n=v.size();
if (obstacleGrid[0][0]) return 0;
if (obstacleGrid[m-1][n-1]) return 0;
int f[102][102]={0};
f[0][0]=1;
int i;
for (i=1; i<m; i++)
if (obstacleGrid[i][0])
break;
else
f[i][0]=1;
for (i=1; i<n; i++)
if (obstacleGrid[0][i])
break;
else
f[0][i]=1;
int j;
for (i=1; i<m; i++)
for (j=1; j<n; j++)
if (obstacleGrid[i][j]==0)
f[i][j]=f[i-1][j]+f[i][j-1];
return f[m-1][n-1];
}
};