115-不同的路径 II

"不同的路径" 的跟进问题:

现在考虑网格中有障碍物,那样将会有多少条不同的路径?

网格中的障碍和空位置分别用 1 和 0 来表示。

注意事项

m 和 n 均不超过100

样例

如下所示在3x3的网格中有一个障碍物:

[

[0,0,0],

[0,1,0],

[0,0,0]

]

一共有2条不同的路径从左上角到右下角。

标签

动态规划 数组

思路

延续lintcode-114-不同的路径的思路,在遇到障碍时,dp[i][j] = 0

code

class Solution {
public:
/**
* @param obstacleGrid: A list of lists of integers
* @return: An integer
*/
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
// write your code here
if(obstacleGrid.size() <= 0 || obstacleGrid[0].size() <= 0) {
return 0;
} int m = obstacleGrid.size(), n = obstacleGrid[0].size();
vector<vector<int> > dp(m, vector<int>(n, INT_MAX));
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
if(obstacleGrid[i][j] == 1) {
dp[i][j] = 0;
continue;
}
if(i == 0 && j == 0) {
dp[i][j] = 1;
}
else if(i == 0 && j > 0) {
dp[i][j] = dp[i][j-1];
}
else if(i > 0 && j == 0) {
dp[i][j] = dp[i-1][j];
}
else if(i > 0 && j > 0) {
dp[i][j] = dp[i][j-1] + dp[i-1][j];
}
}
} return dp[m-1][n-1];
}
};

最新文章

  1. Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i (译)转
  2. yii2.0 Cache缓存
  3. phalcon: router规则与解析,已经生成router的链接地址
  4. MVC设计模式(持续更新中)
  5. Redis的Order Set操作
  6. Hat’s Words hdu-1247
  7. Eclipse无法打开“Failed to load the JNI shared library”
  8. MHA环境的搭建
  9. SqlConnection类
  10. c#将输入的人民币数字金额转换成小写
  11. UIPickView之自定义生日键盘和城市键盘
  12. iOS苹果官方Demo合集
  13. Ubuntu 16.04 安装和使用QQ最简洁的方式
  14. 初探奥尔良(Orleans)
  15. 《前端之路》之 初识 JavaScript
  16. Best Free Hacking E-Books 2017 In PDF Format
  17. NVMe协议1.3c(一) 概述
  18. Scrum Meeting NO.9
  19. Asp.net Daily Build by MsBuild
  20. 2019.01.10 bzoj1095: [ZJOI2007]Hide 捉迷藏(动态点分治)

热门文章

  1. UML绘制活动图--客户来电咨询活动图
  2. 重装系统后激活win10和office2016
  3. IDEA无法引入已经创建的类
  4. 终于搞定了cxgrid的多行表头(转终于搞定了cxgrid的多行表头 )
  5. CentOS下安装pip
  6. JavaSE库存管理系统项目实战
  7. python爬虫:爬取链家深圳全部二手房的详细信息
  8. 怎么用Python Flask模板jinja2在网页上打印显示16进制数?
  9. Redis缓存数据库的安装与配置(3)
  10. 清华大学《C++语言程序设计基础》线上课程笔记02---类与对象