LeetCode63 Unique Paths II 解题报告

Follow up for “Unique Paths”:

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.

[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]

The total number of unique paths is 2.

题意是: 给一个m*n的矩阵,矩阵的值为1,表示无法通过, 矩阵的值为0,表示可以通过,问从[0,0]到[m,n]一共有多少条独立的路径。

根据LeetCode62, 可以得出如果矩阵的值都为0,得到推导公式P[i,j]=P[i-1,j]+P[i,j-1], 当元素为1的时候,很明显该位置的P[i,j]=0,所以根据动态规划思想,可以得到如下的解法:

int uniquePathsWithObstacles(vector<vector<int>> &obstacleGrid)
{
    int re=0;
    if(obstacleGrid.size()==0||obstacleGrid[0][0]==1)
    {
        return re;
    }
    vector<int> path(obstacleGrid[0].size(),0);
    path[0]=1;

    for(int i=0;i<obstacleGrid.size();i++)
    {
        if(obstacleGrid[i][0]==1)
        {
            path[0]=0;
        }
        for(int j=1;j<path.size();j++)
        {
            if(obstacleGrid[i][j]==0)
            {
                path[j]+=path[j-1];
            }
            else {
                path[j]=0;
            }
        }
    }
    re=path[path.size()-1];
    return re;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值