63. Unique Paths II

https://leetcode.com/problems/unique-paths-ii/description/

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        if (m == 0)     return 0;
        int n = obstacleGrid[0].size();
        
        vector<int> dp(n+1, 0);
        dp[1] = !obstacleGrid[0][0];
        for (int i = 1; i <= m; i++)
            for (int j = 1; j <=n; j++)
            {
                if (obstacleGrid[i-1][j-1] == 1)
                    dp[j] = 0;
                else if (j > 1)
                    dp[j] = dp[j-1] + dp[j];
            }
        return dp[n];
        
        /*
        vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
        dp[0][1] = 1;
        for (int i = 1; i <= m; i++)
            for (int j = 1; j <=n; j++)
            {
                if (obstacleGrid[i-1][j-1] == 1)
                    dp[i][j] = 0;
                else
                    dp[i][j] = dp[i][j-1] + dp[i-1][j];
            }
        
        return dp[m][n];
        */
    }
};
原文地址:https://www.cnblogs.com/JTechRoad/p/9969309.html