leetcode-63-不同路径II

class Solution {

public:

    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {

        if (obstacleGrid[0][0] == 1) return 0;

        vector<vector<long long>> dp(obstacleGrid.size(), vector<long long>(obstacleGrid[0].size(), 1));

 

        for (int i=1; i<obstacleGrid[0].size(); i++) {

            if (obstacleGrid[0][i] == 1) dp[0][i] = 0;

            else dp[0][i] = dp[0][i-1];

        }

        for (int i=1; i<obstacleGrid.size(); i++){

            dp[i][0] = obstacleGrid[i][0]==1? 0: dp[i-1][0];

            for (int j=1; j<obstacleGrid[i].size(); j++){

                dp[i][j] = obstacleGrid[i][j]==1? 0: dp[i-1][j] + dp[i][j-1];

            }

        }

        return dp.back().back();

    }

};

相关文章: