刷题-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
上一篇刷题-valid sudoku(有效数独)
下一篇SVM常见的面试题整理
想对作者说点什么? 我来说一句

ACM刷题技巧及一些题目解答

2016年01月03日 20.4MB 下载

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

关闭
关闭