题目

有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。

机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。
问有多少条不同的路径?
注意事项

n和m均不超过100

样例

1,1 1,2 1,3 1,4 1,5 1,6 1,7
2,1            
3,1           3,7

以上3 x 7的网格中,有多少条不同的路径?

思路

dp的思路来解决

dp[0][j] = 1;

dp[i][0] = 1;

dp[i][j] = dp[i-1][j] + dp[i][j-1];

空间复杂度可以降低到O(n)

dp[i] = dp[i] + dp[i-1];

C++代码

 int uniquePaths(int m, int n) {
// wirte your code here
vector<int> dp(n,);
for(int i = ; i < m; ++i)
{
for(int j = ; j < n; ++j)
{
dp[j] += dp[j - ];
}
}
return dp[n - ];
}

不同的路径 II

题目

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

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

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

注意事项

m 和 n 均不超过100

样例

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

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

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

思路

和前面差不多

if(s[i - 1][j] == 0 && s[i][j - 1] == 1) dp[i][j] = dp[i - 1][j];

if(s[i][j - 1] == 0 && s[i - 1][j] == 1) dp[i][j] = dp[i][j - 1];

else if(s[i - 1][j] == 0 && s[i][j -  1] == 0) dp[i][j] = 0;

else if(s[i - 1][j] == 1 && s[i][j - 1] == 1) dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

C++代码

 int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
// write your code here
int m = obstacleGrid.size();
int n = obstacleGrid[].size(); vector<vector<int> > dp(m,vector<int>(n, ));
for(int i = ; i < m; ++i)
{
for(int j = ; j < n; ++j)
{
if(i == && j == ) dp[i][j] = ;
else if(i == )
{
dp[i][j] = dp[i][j - ];
}
else if(j == )
{
dp[i][j] = dp[i - ][j];
}
else if(obstacleGrid[i][j] != )
{
dp[i][j] = dp[i-][j] + dp[i][j-];
}
if(obstacleGrid[i][j] == )
{
dp[i][j] = ;
}
}
}
return dp[m-][n-];
}

LintCode_114 不同的路径,115 不同的路径 II的更多相关文章

  1. Python主文件路径和当前模块路径

    主执行文件路径sys.argv[0]                                                                                   ...

  2. iOS开发——路径篇&混编路径与全局宏路径

    混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...

  3. Java中windows路径转换成linux路径等工具类

    项目中发现别人写好的操作系统相关的工具类: 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html import java.net.In ...

  4. C#中网站根路径、应用根路径、物理路径、绝对路径,虚拟路径的区别

    C#中网站根路径,请站点的最外一层 /表示 应用根路径 ~/表示,有时候C#程序路径并不是网站路径 物理路径 server.mappath("~/") 是指应用程序放在服务器硬盘的 ...

  5. [js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解

    路径在canvas绘图中,经常被用到,是一个非常重要的概念. 比如:我们要在canvas画出3条直线,要求用不同的颜色加以区分. <style> body { background: #0 ...

  6. Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法

    Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...

  7. 巧用Javascript将相对路径地址转换为绝对路径

    这里介绍的其实本质上是两种方法,通过创建DOM或通过JavaScript计算: 1)通过新创建的Image, 经测试会发送一个Aborted的请求,并且IE6不支持, 将new Image改成docu ...

  8. maven打包报错:在类路径或引导类路径中找不到程序包 java.lang

    刚下了个新项目,跑了下maven报错了: E:\workspace\portalframe>mvn clean install [INFO] Scanning for projects... [ ...

  9. 织梦dedecms5.7二级域名文章图片不显示修改方法.相对路径改为绝对路径的方法

    dedecms升级到5.7SP1后,开启二级域名,你会发现,在二级域名下的文章,上传的图片地址都是:二级域名+图片地址,这是相对路径.但是你的图片是默认上传在uploads里面的.应该使用绝对路径.这 ...

  10. 传统路径导出 VS 直接路径导出(oracle exp direct=y)

    Oracle 传统的Export与Import依旧被保留到11g,而且9i与10g有很多依旧使用Export与Import方式进行备份与恢复的企业.从Oracle 7.3开始,传统的exp导出程序提供 ...

随机推荐

  1. [JZOJ4684] 【GDOI2017模拟8.11】卡牌游戏

    题目 描述 题目大意 有111到2n2n2n牌,一开始分别给两个人,每人nnn张. 轮流出牌,给出对手出牌的顺序,若自己的牌更大,就记一分. 在中间的某个时刻可以改变游戏规则. 问最大的分数. 思考历 ...

  2. HTML值改变事件

    1.动态拼接html[表格中,如bootstrap grid] return '<input type="text" name="bjce" onchan ...

  3. LUOGU P3387 【模板】缩点 (缩点+DAG dp)

    解题思路 缩点后按拓扑排序跑一个dp. #include<iostream> #include<cstdio> #include<cstring> #include ...

  4. Centos--swoole平滑重启服务

    平滑重启: 已经打开的服务: 首先在server服务中为进程添加名字: /** * @param $server */ public function onStart($server) { swool ...

  5. egret 篇——关于ios环境下微信浏览器的音频自动播放问题

    前段时间公司突然想用egret(白鹭引擎)做一个金币游戏,大半个月边看文档边写吭哧吭哧也总算是弄完了.期间遇到一个问题,那就是ios环境下微信浏览器的音频自动播放问题. 个人感觉吧,egret自己封装 ...

  6. 《DSP using MATLAB》Problem 8.28

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  7. ps命令详解-转

    名称:ps使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A   ...

  8. CheckBox自定义样式

    效果: xmal代码: <Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}"> & ...

  9. 【机器学习】机器学习入门02 - 数据拆分与测试&算法评价与调整

    0. 前情回顾 上一周的文章中,我们通过kNN算法了解了机器学习的一些基本概念.我们自己实现了简单的kNN算法,体会了其过程.这一周,让我们继续机器学习的探索. 1. 数据集的拆分 上次的kNN算法介 ...

  10. 如何查看PostgreSQL正在执行的SQL

    SELECT     procpid,     start,     now() - start AS lap,     current_query FROM     (SELECT          ...