摔手机

摔手机 动态规划  在蓝桥杯的时候遇到一次 当时没有做对  看了题解也没明白  如今再次遇到这个类似的题目

于是拿出来补补吧

摔手机题目如下:

星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。

x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。

如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n

为了减少测试次数,从每个厂家抽样3部手机参加测试。

某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?

请填写这个最多测试次数。

之前做题目时比较天真  觉得   二分 摔手机最优啦  ╮( ̄▽ ̄")╭   ╮( ̄▽ ̄")╭   菜鸡的天真

对于这个题目  我们也可以设计一个状态  dp[i][j]   i代表手机的数目    j代表层数   dp[i][j]为i个手机j层最佳的策略 最糟糕的次数

下面就是要去求  dp[i][j]是多少啦

假如这里有j层   那么我们可以选择一层  第k层 把手机摔下去  当然  0<k<j
那么我们丢下去就有2种可能  一种是摔坏了  一种是没有摔坏
摔坏了  那么我们就要从  这1到k-1层中去找  那么我们从第k层摔下去 摔坏了后 所需要的摔手机的次数 就是 dp[i-1][k-1]+1
如果没有摔坏  我们就要从k+1到j这 j-k层中去找   那么我们从第k层摔下去 没有摔坏后 所需要的摔手机的次数 就是 dp[i1][j-k]+1
因为是最糟糕的情况 所以我们要这两种情况的最大值

但是k层能有好多种选择   把k遍历一遍    这这么一堆情况的最小值  那个最小值就是  dp[i][j]  即为  我们i个手机从第j层丢下去 测试那层摔坏的最优策略的最糟糕的次数

感觉比较绕绕的

可以使用递推推出来  在递推之前还要预处理一下  即1个手机  测试多少层   那么次数就多少层
                                                                             一共1层 无论多少个手机 都是测试一次
                                                                             一共0层 无论多少个手机 都是测试零次

代码如下
        int dp[51][1001];
 memset(dp,0x3f,sizeof(dp));

for(int i=1;i<1001;i++)dp[1][i]=i;
for(int i=1;i<51;i++)dp[i][0]=0;
for(int i=1;i<51;i++)dp[i][1]=1;
 for(int j=2;j<51;j++)
for(int i=1;i<1001;i++){
for(int k=1;k<i;k++)
dp[j][i]=min(max(dp[j-1][k-1],dp[j][i-k])+1,dp[j][i]);
}
     下面要几个手机几层楼 至少需要次数多少次 就好像一个表一样 直接查询就可以了

转载于:https://www.cnblogs.com/DWVictor/p/10283212.html

2018年第九届蓝桥杯B组第四题:摔手机题解相关推荐

  1. 2018年第九届蓝桥杯 JavaB组省赛 刷题思路及答案

    前言 本人是二本院校大二的计算机系学生,已经报名了下一届的蓝桥杯省赛,整个寒假学习了很多算法知识,我是看<算法很美>这个课程学习算法的,一套学习下来确实受益匪浅,视频在b站上面都有. 此前 ...

  2. 2018年第九届蓝桥杯A组省赛

    A.分数(5分) 答案:1048575/524288 试题 A: 分数 本题总分:5 分 [问题描述] 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有 ...

  3. 2018年第九届蓝桥杯B组 国赛

    一.换零钞 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. X 星球的钞票的面额只有:100 元,5 元,2 元,1 元,共 4 种. 小明去 X 星旅游,他手里只 ...

  4. 用excel解蓝桥杯(2018年第九届蓝桥杯A组)

    第一题 标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + -. 每项是前一项的一半,如果一共有20项, 求这个和是多少,结果用分数表示出来. 类似: 3/2 当然,这只是加了前 ...

  5. 第九届蓝桥杯JavaA组(2018年)省赛真题解析

    第九届蓝桥杯JavaA组(2018年)省赛真题解析 1.分数 1/1+1/2+1/4+1/8+1/16+- 每项是前一项的一半,如果一共有20项,求这个和是多少 结果用分数表示,类似: 3/2,当然这 ...

  6. 7.python解答2018年第九届蓝桥杯省赛C++A组 分数

    7.python解答2018年第九届蓝桥杯省赛C++A组 分数 标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项,求这个和是多少,结果 ...

  7. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  8. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯单片机组省赛试题.pdf

    第九届蓝桥杯单片机组省赛试题 "彩灯控制器"的程序设计与调试 (70 分) 一.基本要求 1.1 使用CT107D 单片机竞赛板,完成"彩灯控制器"功能的程序设 ...

  9. 关于2018年第九届蓝桥杯省赛(江苏赛区)

    为啥到现在才写呢...就是懒,是真的懒.题也没刷几个 (下面题目的超链接转自这里,并不是本人解法..只是因为有题目还有题解) 4.1举行的蓝桥杯也可以说是"愚人杯"了 早早的跟同学 ...

最新文章

  1. python里面的之前打过的记忆信息-python中的记忆:如何缓存函数的运行结果(1)
  2. C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
  3. 龘(若出身在新中国我的65047777
  4. 7 QM配置-质量计划配置-定义检验方法的编号范围
  5. 任务记录:OEA 框架中的多类型树控件
  6. vue.js+webpack 为 img src 赋值的路径问题解决方法
  7. 2021-05-19 C语言逻辑取反! 学习
  8. oracle sde 千万数据,Oracle+sde数据备份恢复(转自GIS帝国论坛)
  9. 苹果ppt_如何下载小程序上的PPT与PDF? (苹果系统、安卓系统)
  10. 核方法也称为核技巧(Kernel method)
  11. 收藏有关信号处理的博客
  12. openg 通用扫描画线算法
  13. 在运维日常工作过程中遇到的一些问题,以及最终的解决方法!!(持续更新帖)
  14. 写给理工科人看的乐理(一)声学基础
  15. Hyperledger Fabric 2.x 环境搭建
  16. 学python入门基础教程[推荐]
  17. signature=f14550b5daa7cd82f0637de3dae7c98d,来用百度密语吧!!!
  18. 无线技术给网络插上飞翔的翅膀(转)
  19. 音视频测试的基础概念
  20. Mysql之IN 和 Exists 用法

热门文章

  1. 高通核心板,高通骁龙410系列 MSM8916
  2. 【数学分析入门】R语言独立性检验方法
  3. 姜小白的Python日记Day6 集合的用法
  4. 关于站内信的开发思路
  5. Spring_背诵英文单词
  6. 安徽师范大学计算机学院在哪个校区,2021年安徽师范大学有几个校区,大一新生在哪个校区...
  7. Java古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  8. Verilog实现之任意分频电路
  9. GSM Hacking:如何对GSM/GPRS网络测试进行测试
  10. 解析android多语言与自定义字体