Unique Paths II

来源:互联网 发布:java面向对象总结 编辑:程序博客网 时间:2024/06/02 03:34
class Solution {public:    int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {        //modify the input directly,because 1 is used for representing obstacle,so we use negative number for count        int m=obstacleGrid.size();        if(m==0)        {            return 0;        }        int n=obstacleGrid[0].size();        if(n==0)        {            return 0;        }        for(int i=0;i<n;++i)        {            if(obstacleGrid[0][i]==1)            {                break;            }            else            {                obstacleGrid[0][i]=-1;            }        }        for(int j=0;j<m;++j)        {            if(obstacleGrid[j][0]==1)            {                break;            }            else            {                obstacleGrid[j][0]=-1;            }        }        for(int a=1;a<m;++a)        {            for(int b=1;b<n;++b)            {                if(obstacleGrid[a][b]==1)                {                    continue;                }                if(obstacleGrid[a][b-1]!=1)                {                    obstacleGrid[a][b]+=obstacleGrid[a][b-1];                }                if(obstacleGrid[a-1][b]!=1)                {                    obstacleGrid[a][b]+=obstacleGrid[a-1][b];                }            }        }        return obstacleGrid[m-1][n-1]==1?0:-obstacleGrid[m-1][n-1];    }};


和上一题Unique Paths几乎一样,只是多了要判断一下当前的坑是不是路障。此外初始化dp矩阵时要注意合理性。我是直接在输入的矩阵上进行填坑的,由于要避免和用来表示路障的1冲突,所以用负数来进行计数。

0 0
原创粉丝点击