LeetCode 63. Unique Paths II

来源:互联网 发布:windows xp sp3原版 编辑:程序博客网 时间:2024/06/06 14:22

题意

给出一个nm的地图,地图中会存在障碍,求从左上角到右下角的方案数,只能向右走或者向下走

思路

和上一题62. Unique Paths差不多,只是多了一些障碍,只需要判断一下就可以了,需要注意对于边界的处理如果前一步不能到达,那么当前也是不可能到达的.

代码

class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        int m = obstacleGrid.size();        if(m == 0) return 0;        int n = obstacleGrid[0].size();        vector<vector<int> >dp(m, vector<int>(n));        for(int i = 0; i < m; i++){            dp[i][0] = (obstacleGrid[i][0] == 0);            if(i && dp[i-1][0] == 0) dp[i][0] = 0;        }        for(int i = 0; i < n; i++){            dp[0][i] = (obstacleGrid[0][i] == 0);            if(i && dp[0][i - 1] == 0) dp[0][i] = 0;        }        for(int i = 1; i < m; i++){            for(int j = 1; j < n; j++){                if(obstacleGrid[i][j] == 1){                    dp[i][j] = 0;                } else{                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];                 }            }        }        return dp[m - 1][n - 1];    }};