程序设计与算法(二)

算法基础

1

2

动态规划(二)

例题

Help Jimmy

圣彼得堡彼得霍夫宫

Help Jimmy(POJ1661)

"Help Jimmy" 是在下图所示的场景上

完成的游戏:

5

Help Jimmy(POJ1661)

场景中包括多个长度和高度各不相同的平台。

地面是最低的平台,高度为零,长度无限。

Jimmy老鼠在时刻0从高于所有平台的某处开始下落,

它的下落速度始终为1米/秒。当Jimmy落到某个平台上

时,游戏者选择让它向左还是向右跑,它跑动的速度

也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下

落。Jimmy每次下落的高度不能超过MAX米,不然就

会摔死,游戏也会结束。

设计一个程序,计算Jimmy到地面时可能的最早时间。

6

Help Jimmy(POJ1661)

输入数据

第一行是测试数据的组数t (0 <= t <= 20)。每组测试数据的第一行是

四个整数N,X ,Y ,MAX,用空格分隔。N是平台的数目(不包括地面),

X和Y是Jimmy开始下落的位置的横竖坐标,MAX是一次下落的最大高度。接

下来的N行每行描述一个平台,包括三个整数,X1[i] ,X2[i]和H[i]。H[i]表示

平台的高度,X1[i]和X2[i]表示平台左右端点的横坐标。1 <= N <= 1000,

-20000 <= X, X1[i], X2[i] <= 20000,0 < H[i] < Y <= 20000 (i = 1..N)。

所有坐标的单位都是米。

Jimmy的大小和平台的厚度均忽略不计。如果Jimmy恰好落在某个平台的

边缘,被视为落在平台上。所有的平台均不重叠或相连。测试数据保Jimmy

一定能安全到达地面。

7

Help Jimmy(POJ1661)

输出要求

对输入的每组测试数据,输出一个整数,

Jimmy到地面时可能的最早时间。

输入样例

1

3 8 17 20

0 10 8

0 10 13

4 14 3

输出样例

23

8

解题思路

Jimmy跳到一块板上后,可以有两种选择,向左走,或向右走。

走到左端和走到右端所需的时间,是很容易算的。

如果我们能知道,以左端为起点到达地面的最短时间,和以右端为起点到达

地面的最短时间,那么向左走还是向右走,就很容选择了。

因此,整个问题就被分解成两个子问题,即Jimmy所在位置下方第一块板左

端为起点到地面的最短时间,和右端为起点到地面的最短时间。

这两个子问题在形式上和原问题是完全一致的。将板子从上到下从1开始进

行无重复的编号(越高的板子编号越小,高度相同的几块板子,哪块编号在前

无所谓) ,那么,和上面两个子问题相关的变量就只有板子的编号。

9

不妨认为Jimmy开始的位置是一个编号为0 ,长度为0的板子,

假设LeftMinTime(k)表示从k号板子左端到地面的最短时间,

RightMi

android 动态规划,7. 动态规划(二)Android移动应用开发.pdf相关推荐

  1. 【Android 学习】之二维码扫描开发(闪光灯功能)

    .............................................................................. Android二维码扫描我们可以调用Zin ...

  2. Android Studio系列(二)使用AS开发/调试整个android系统源代码(不定时更新)

    转载自:http://blog.csdn.net/aaa111/article/details/43227367 一.修改AS的配置 由于Android源码太大了,在过导入源码和后续工作中,AS需要占 ...

  3. Android核心服务解析篇(二)——Android源码结构分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 获得Android源码后,我们来分析源码结构.源码的全部工程分为如下三个部分. ①Core Project:核心工程部分,这是建 ...

  4. Android入门篇(二)熟悉androidstudio开发软件

    本章将说明如何在项目中加入各种组件(文本框.按钮.输入字段).设计用户界面的各种基本知识.示范使用简单的方式编写程序,建立具有互动效果的程序逻辑. (一)Android App主要组成 Android ...

  5. Android日志[基础篇]二 Android Studio修改LogCat日志的颜色

    上一篇提到Android日志的5个级别的日志输出,在logcat里面设置自己喜欢或习惯的颜色,本文不只讲Android Sudio修改logcat的日志颜色. 代码和效果 代码 private voi ...

  6. Android studio使用心得(二)— 打包签名apk发布

    1.-–Android Studio菜单   Build->Generate Signed APK 2.--Create new.. 3.---跟eclipse里面一样,添加keystore 信 ...

  7. Android Linker详解(二)

    Android Linker详解(二) Android Linker详解(二) 本文目的 So的链接 So重定位 总结 本文目的 接上篇Linker源码详解(一),本文继续来分析Linker的链接过程 ...

  8. Android入门教程 (二) 第一个App HelloWorld

    一 .前言 作为一名程序员,开始学习一门新的语言的第一步就是让程序输出 "Hello World!".学习Android也是一样,我的教学也是从第一个 "Hello Wo ...

  9. Android项目实战(二十七):数据交互(信息编辑)填写总结

    前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先写实现过程,想要学习的同学可以看看,不需要的同学可以直接拉到最下 ...

  10. 为什么Android项目mainactivity中有一个变量R_【Android开发入门教程】二.Android应用程序结构分析!...

    一.新建HelloWorld项目: 1.打开Eclipse,点击"File"->"New"->"Project"-Android ...

最新文章

  1. Vlan间路由实验(单臂路由实现法)
  2. android 手机号分段_android 手机号分段_android系统实现手机号添加分割符
  3. Java-JPA:JPA
  4. mysql 磁盘限额_为Linux MySQL数据库设置磁盘限额
  5. 【机器视觉】 serialize_measure算子
  6. leetcode 211. Design Add and Search Words Data Structure | 211. 添加与搜索单词 - 数据结构设计(Java)
  7. Servlet使用适配器模式进行增删改查案例(IBaseDaoUtil.java)
  8. kafka处理流式数据_通过Apache Kafka集成流式传输大数据
  9. Eureka Server 集群
  10. 数据结构与算法:实验一线性表(字符串分类统计)
  11. 压缩的问题-----WriteUp
  12. 谷歌安卓之父离职内幕;抖音上线小程序;苹果被罚千万 | 极客头条
  13. python21天打卡Day9-string和dict类型互转
  14. CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案
  15. mysql5.5创建学生情况表_数据库中创建一个学生表
  16. 五大主流浏览器内核以及国内常见的几种浏览器内核总结
  17. Ubuntu18.04下小米、TPLink、腾达USB无线网卡跳坑记录
  18. php判断caj文件页数,CAJ转Word有没有既免费还不限制页数的转换工具?
  19. 图解SM2算法流程——第1章 概述
  20. 源程序,目标程序,可执行程序

热门文章

  1. 内存涨价成为必然!三星SK海力士美光削减28%内存资本开支
  2. iPhone越来越难打动你?从iOS平台转投安卓阵营 这招你得学会!
  3. 一代上网人的记忆!百度浏览器将不再更新
  4. 年轻人的第一套租房?小米成立新公司或涉房屋租赁业务
  5. 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码
  6. Android studio 2.3版本出现的问题: Please select at least one of the signature versions to use
  7. Framework学习(二)Android的启动过程
  8. 一个内核调试函数的实现
  9. Oracle密码过期及账户解锁的问题
  10. 计算机二级晓云是企业人力,全国计算机二级Ms-Office精选真题试卷