题意:
解题思路:
动态规划解法:因为小up正在学习动态规划,所以就记录一下动态规划的解题思路,首先列出动态转化方程dp[i][j] = dp[i-1][j] + dp[i][j-1],但是前提是中间有障碍物,我们需要把障碍物上的dp置0,然后按行依次填满dp数组,最后返回dp[n-1[m-1]就是问题的解!
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int n = obstacleGrid.size(), m = obstacleGrid.at(0).size();
int dp[n][m];
dp[0][0] = int(obstacleGrid[0][0] == 0);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (obstacleGrid[i][j] == 1) {
dp[i][j] = 0;
continue;
}
if(i==0 && j!=0 )
dp[i][j] = dp[i][j-1];
if(i>0 && j==0 )
dp[i][j] = dp[i-1][j];
if (i>0 && j>0 )
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[n-1][m-1];
}
};