刷题-unique-paths-ii

题目描述

现在考虑是否有一些障碍物被添加到网格中。将有多少路径?

网格中的障碍物和空白区分别标记为1和0。

例如,在3x3网格中间有一个障碍,如下图所示。

[
[0,0,0]
[0,1,0]
[0,0,0]
]
唯一路径的总数是2。

注意: m和n最多为100。

int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
        int m=obstacleGrid.size();
        int n=obstacleGrid[0].size();


       vector<vector<int>> dp(m,vector<int>(n,0));
        for(int i=0;i<m;i++){
            if(obstacleGrid[i][0]!=1)
                dp[i][0]=1;
            else
                break;
        }
        for(int j=0;j<n;j++){
            if(obstacleGrid[0][j]!=1)
                dp[0][j]=1;
            else
                break;
        }
        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];//dp递推式
            }
        }
        return dp[m-1][n-1];


    }
阅读更多
文章标签: 动态规划
个人分类: LeetCode
想对作者说点什么? 我来说一句

c_c++刷题必备好资料

2014年07月29日 179KB 下载

没有更多推荐了,返回首页

不良信息举报

刷题-unique-paths-ii

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭