资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。
输入格式
  第一行包含一个整数n,代表楼的高度。

接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。
输出格式
  输出1行,包含一个整数,表示所需的最短时间。
样例输入
5
3
5
1
8
4
样例输出
1
数据规模和约定
  对20%的数据,n<=10
  对40%的数据,n<=100
  对60%的数据,n<=5000
  对100%的数据,n<=10000

这个题的解题核心思想:
用递归分类的思想去处理,在到达第i层所需的最少时间的方案是两种:
第一种:在第i-1或者i-2层的时候没有使用跳跃,那么最后选择跳跃,这样子到达第i层的时间就和第i-1和i-2层的时间相同
第二种:在第i-1或者第i-2层的时候已经使用了跳跃,那么在接下来的下一步步骤中就不能使用跳跃了,最后到达第i层的时间就是到达第i-1层的时间加上第i层和第i-1层的高度差,如果是到达第i-2层的时候使用了跳跃,那么接下来只需要在第i-2到第i-1层的距离中爬上去,在最后第i-1到第i层的时候选择跳跃就可以了,即加上array[i-1]。反复递归就可以得到了最终的答案。

代码如下:

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int []array = new int[10005];for (int i = 0; i < n; i++) {array[i] = scanner.nextInt();}int [][]f = new int [10005][2];f[1][0] = array[0];f[1][1] = 0;for (int i = 2; i <= n; ++i){f[i][0] = min(f[i-1][0], f[i-1][1]) + array[i - 1];f[i][1] = min(f[i-1][0], f[i-2][0]);}System.out.println(min(f[n][0], f[n][1]));scanner.close();}public static int min(int m,int n) {return m < n ? m : n;}
}

运行截图

用C语言描述如下:

#include <stdio.h>int min(int a, int b)
{return a < b ? a : b;
}int main()
{int n;int height[10005] = { 0 };scanf("%d", &n);int i;for ( i = 1; i <= n; ++i)scanf("%d", &height[i]);int f[10005][2] = { 0 };f[1][0] = height[1];f[1][1] = 0;for ( i = 2; i <= n; ++i){f[i][0] = min(f[i-1][0], f[i-1][1]) + height[i];f[i][1] = min(f[i-1][0], f[i-2][0]);}printf("%d", min(f[n][0], f[n][1]));return 0;
}

蓝桥杯 ADV_302 秘密行动相关推荐

  1. [蓝桥杯python] 秘密行动:小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层

     [蓝桥杯python] 秘密行动 1.资源限制 2.输入格式 3.输出格式 4.样式输入及输出 5.代码及解析 大功告成!编写不易,大家成功后点个关注or赞谢谢~ 问题描述 小D接到一项任务,要求他 ...

  2. 一些蓝桥杯的简单模拟题目

    3.xx大学的模拟题 1.基础知识 顺序 选择 循环 数组宁符数组 结构体 函数 全排列 multimap 1.*梦里的难题 生化危机血腥暴力的场面对小星星的冲击很大,晚上频繁地做起了梦,梦里他担负起 ...

  3. 第十三届蓝桥杯模拟赛第二期JAVA组个人题解

    第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...

  4. 第13届蓝桥杯省赛真题剖析-2022年4月17日Scratch编程初中级组

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第122讲. 第13届蓝桥杯省赛举办了两次,这是202 ...

  5. 第十四届蓝桥杯大赛软件赛省赛JavaB组解析

    目录 说在前面 试题 A: 阶乘求和 代码: 题目分析: 试题 B: 幸运数字 代码: 题目分析: 试题 D: 矩形总面积 代码: 题目分析: 试题 G: 买二赠一 代码: 题目分析: 试题 H: 合 ...

  6. 蓝桥杯大赛决赛整理合集(B组C/C++)

    蓝桥杯大赛决赛整理合集(B组C/C++) 根据大纲梳理一遍,也在全文最后补充了最几年的决赛真题,全文基于C++编写,希望对你有所帮助 关于省赛的反思: 1.我的Code::Block 20.03在机房 ...

  7. 第十三届蓝桥杯模拟赛(第二期)试题与题解 C++

    第十三届蓝桥杯模拟赛(第二期)试题与题解 1.试题A [问题描述] ​ 小蓝的IP地址为 192.168. * .21,其中 * 是一个数字,请问这个数字最大可能是多少 ? 题解 IP地址由四个字节组 ...

  8. 十二届蓝桥杯省赛B组C++解析(填空题部分)

    十二届蓝桥杯省赛B组C++解析(填空题部分) 目录 十二届蓝桥杯省赛B组C++解析(填空题部分) A:空间 B:卡片 C:直线 D:货物摆放 E:路径 A:空间 该题是一道计算机基础原理题,这里需要了 ...

  9. 关于python的比赛_【蓝桥杯】——python集团的比赛技巧,Python,组

    [蓝桥杯]-- Python组比赛技巧 蓝桥杯是大学生IT学科赛事,由工业和信息化部人才交流中心主办,所以对于大学生还说还是非常值得去参加的,2020年第十一届蓝桥杯新增了大学Python组,不分组别 ...

最新文章

  1. 对不队—— Alpha冲刺
  2. iOS友盟推送发送失败
  3. jQuery操作json
  4. atomic 内存序_并行编程的内存顺序 2020-11-23
  5. Linux内核设计与实现---进程地址空间
  6. 8.修改、扩展、重写Magento代码
  7. Shiro面试题答案
  8. 五步搞定Java性能调优(附超全技能图谱)
  9. 汇率的思维导图模板下载方法
  10. e1载波的数据速率是_基于宽带电力线载波通信的路由技术研究
  11. Python 下载百度文库
  12. SCDM——多进(出)口流道的抽取
  13. 有哪些常见的电脑硬盘故障?
  14. Windows无法完成格式化U盘终结解决方法
  15. BH1750FVI光强度传感器及其STM32驱动程序
  16. nodejieba的配置(windows)
  17. SVN(Subversion)中文版安装教程
  18. vue中给字段base 64加密
  19. 高校的论文查重系统有哪些?
  20. 读《战国策.赵策一》

热门文章

  1. 天梯赛刷题1:Prime Path
  2. linux下pfam使用方法,利用Pfam数据库的信息做转录因子的分类
  3. 华为harmonyos公测,华为鸿蒙Harmony OS 2.0开启第二轮公测:新增七款机型一览
  4. Java抽象类和接口的区别
  5. 从锤子手机看『情怀』与有『情怀』的产品设计
  6. Altium Designer使用5:AD18的DXP在什么地方?
  7. C++编程练习 022:魔兽世界之二:装备
  8. CleanMyMac4.13最新版Mac系统电脑管家
  9. MybatisPlus3整合
  10. Ubuntu环境下vjudge系统搭建