x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机;

(1)对于这道题摔手机测试题呢!也就是求它的最优解;我一开始想到这道题的解法呢!是二分解,但你往里面具体的深入的看题,它是一个巨大的坑;既然这样行不通,那我们就只能换另一个思路了,dp动态规划;

我们首先来看一下题目:

****//标题:测试次数
//x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
//各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通.
//x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。
//如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
//特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
//

在来了解一下如何解题?这个动态规划到底怎么写?

1.我们摔手机测试按着运气再差的心态来说是吧!摔3次,恰巧都坏了呢?
2.令dp[i][j]为i层j个手机的最多(最优)测试次数。第一摔如何摔?每一层都可以作为第一摔。
3.设第一摔选在了第k层。
第一摔只能有两种结果:碎或者不碎。

(1)碎

如果碎了就让他们碎了都-1,楼层和手机,上面的层不再考虑,只需要在下面的层测试,手机少了一部,即 dp[k-1][j-1];

(2)不碎

如果没碎,下面的层不再考虑,只需要在上面的层测试,手机还是那么多,即 dp[i-k][j]
通过上面的分析:
因此,我们得出从k层开始摔,运气最坏需要 max(dp[k-1][j-1], dp[i-k][j]) + 1 次测试
k有多种选择,因此 最好的结果为: dp[i][j] = min( max(dp[k-1][j-1], dp[i-k][j]) + 1 )

所以存在最优解,故我们采取最优策略,求子问题的min即可,而碎或者未碎这种事情会存在最坏情况,故我们采用最坏情况的值,求子决策的max即可。
具体代码展示:
int dp[][]=new int[1001][4];//初始化dp的大小for (int n = 1; n <=3; n++) //它的手机个数for (int i = 1; i <=1000; i++) { //楼层数dp[i][n]=dp[i-1][n]+1;// 当前最优次数[楼层][2]=1+当前最优次数[楼层-1][2];//最坏情况for (int j = 1; j <i&&n>1; j++) dp[i][n]=Math.min(dp[i][n],Math.max(dp[j-1][n-1], dp[i-j][n])+1);//然后math.min找最优解}System.out.println(dp[1000][3]);//当前最优次数;
int dp[][]=new int[1001][4];for (int n = 1; n <=3; n++) for (int i = 1; i <=1000; i++) {dp[i][n]=dp[i-1][n]+1;for (int j = 1; j <i&&n>1; j++) dp[i][n]=Math.min(dp[i][n],Math.max(dp[j-1][n-1], dp[i-j][n])+1);}System.out.println(dp[1000][3]);

结果:19

蓝桥杯——第九届C语言B组第五题:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机;相关推荐

  1. 蓝桥杯真题 18省4-测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐

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

  2. 第九届蓝桥杯省赛JAVA语言 C组题解_题7 缩位求和

    JAVA语言 C组题解_题7 缩位求和 题目 解题思路 题目 标题:缩位求和 在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确. 比如:248 * 15 = 3720 把乘数和被乘 ...

  3. 蓝桥杯第九届C语言C组第二题:猴子分香蕉

    标题:猴子分香蕉 内容:5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉. 第2 ...

  4. 蓝桥杯抽卡游戏c语言,取球游戏——第三届蓝桥杯省赛C语言A组第10题

    今盒子里有n个小球,A.B两人轮流从盒中取球,每一个人均可以看到另外一我的取了多少个,也能够看到盒中还剩下多少个,而且两人都很聪明,不会作出错误的判断.编程 每一个人从盒子中取出的球的数目必须是:1, ...

  5. 蓝桥杯2016年C语言B组-交换瓶子

    蓝桥杯2016年C语言B组 交换瓶子 代码 交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的 ...

  6. 蓝桥杯c语言校内选拔赛试题,2013年蓝桥杯校内选拔赛C语言B组.docx

    2013年蓝桥杯校内选拔赛C语言B组.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水 ...

  7. 2015年第七届蓝桥杯省赛C语言B组

    2015年第七届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题: 题目:奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就 ...

  8. 2012年第三届蓝桥杯省赛C语言B组

    2012年第三届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题 题目:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次( ...

  9. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

最新文章

  1. php读取txt并写入数据库,php读取txt文件组成SQL并插入数据库的方法
  2. 数据中心节能改造刻不容缓成本高昂怎么破?
  3. 如何做相册_腾讯相册管家再创相册管理软件新纪元
  4. MySQL+HandlerSocket=MySQL的功能+NoSQL的性能
  5. 【转】ABP源码分析四十三:ZERO的本地化
  6. uvc能支持多大分辨率_华为手环B5测评:该有的功能一个不缺,甚至还能变身蓝牙耳机...
  7. 周华健,歌声伴我成长(三)
  8. 【python】python的环境搭建
  9. windows下多线程知识
  10. [debug] 令人智熄的调试:忘记加return
  11. Andorid Kernel 编译测试
  12. 【转】Nodejs链接Mysql批量添加 insert into
  13. php 阻止ip代码,php – 如何阻止100,000个独立的IP地址
  14. AI:人工智能领域之AI发展历史的重要历史时间节点、大牛们对AI相关概念的定义
  15. 刑法285.286.287 条
  16. 【JavaScript】新浪微博如何快速批量取消关注?
  17. 在数据库使用期间创建OMF(Oracle Managed Files,Oracle管理的文件)
  18. 程序员高管修炼之道!
  19. 笔记本电脑都有光驱吗?
  20. 数据量太大,内存不够怎么办?

热门文章

  1. 如何实现手机远程控制电源开关
  2. echarts 双y轴设置
  3. html5+交友app,国内5款高质量陌生人社交软件,你玩过几个
  4. 手机APP测试注意点
  5. 高通820(msm8996)camera hal源码分析
  6. Zhishi.me - Weaving Chinese Linking Open Data
  7. xp自定义桌面中ie图标消失解决办法
  8. meo学习笔记3:并行与并发,线程与进程的区别
  9. mysql导出数据库1146_MySQL复制出错 Last_SQL_Errno:1146的解决方法
  10. vegan稀释曲线 基因丰度_基于OTU的稀释曲线(Rarefaction curves) + ggplot2