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

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

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

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

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

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

注意:需要填写的是一个整数,不要填写任何多余内容。

通常会想到二分法,但是:1000层,500层,250层,……手机不够摔。答案:19
package bb;
public class JB18_4测试次数_摔手机 {public static void main(String[] args) {int ret = testCount(1000, 3);System.out.println(ret);}public static int testCount(int floor, int phone) {if (phone == 1) {// 最后一部手机:一层一层地摔return floor;}// 之所以+1,是为了和题目接近,1楼开始,1部手机算起,不从0计数了int[][] arr动态规划 = new int[floor + 1][phone + 1];for (int i = 1; i != arr动态规划.length; i++) {arr动态规划[i][1] = i;}for (int n = 1; n < arr动态规划.length; n++) {// n:共多少层(1000层分为1~500,则n=500;再分为501~100,则n=500)for (int ph = 2; ph < arr动态规划[0].length; ph++) {// ph:手机数(1部手机时不管了,前面已经拦截了)int min = Integer.MAX_VALUE;for (int i = 1; i < n + 1; i++) {// i:当前楼层——摔手机两种结果:要么摔坏了,要么没摔坏int 摔坏 = arr动态规划[i - 1][ph - 1];// i-1层以下去摔,手机损失1部int 没摔坏 = arr动态规划[n - i][ph];// i层以下排除,还有n-i层用于测试,手机数不变// 题目要求:最坏的运气下最多需要测试多少次才能确定手机的耐摔指数int 最坏运气次数 = Math.max(摔坏, 没摔坏);// 题目要求:采用最佳策略min = Math.min(min, 最坏运气次数);}arr动态规划[n][ph] = min + 1;}}return arr动态规划[floor][phone];}
}

转载于:https://www.cnblogs.com/tigerlion/p/11182888.html

蓝桥杯——测试次数·摔手机(2018JavaB组第4题,17分)相关推荐

  1. 蓝桥杯——快速排序(2018JavaB组第5题9分)

    快速排序(18JavaB5,9') 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. impo ...

  2. 入门级动态规划:2018年第九届蓝桥杯省赛B组第四题—测试次数( 摔手机 )

    目录 --下面列出用动态规划如何解决此问题-- ①计算若干层楼用若干部手机最少需要摔多少次 ②计算用若干部手机摔若干次最多可以确定多少层楼 原题描述: x星球的居民脾气不太好,但好在他们生气的时候唯一 ...

  3. 测试次数----2018年第九届蓝桥杯C/C++省赛B组 第四题

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

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

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机; (1)对于这道题摔手机测试题呢!也就是求它的最优解;我一开始想到这道题的解法呢!是二分解,但你往里面具体的深入的看题,它是一个巨 ...

  5. 算法技能树2-蓝桥杯-python实现测试次数(摔手机)-动态规划(DP)

    文章目录 1.题目描述 2.python解题 1.知识点总结 1.题目描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规 ...

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

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

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

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

  8. 原理详解与标准解法——蓝桥杯_2016年省赛B组 第七题 剪邮票(暴力+迷宫变形)

    如[图1.jpg], 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合> 格 ...

  9. 2015年第六届蓝桥杯C/C++程序设计本科B组决赛第二题

    http://www.docin.com/p-506195687.html 这样算不算写了一道题.... 完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. ...

最新文章

  1. 吴恩达机器学习 -- 正则化
  2. 图像处理与图像识别笔记(六)图像增强3
  3. 10099 The Tourist Guide
  4. java的数组和链表从熟系到陌生
  5. pythondd_windows7下安装python环境和django
  6. Sushiswap团队开发者:Sushi在Q1实现400亿美元的交易量,xSUSHI持有者获得2000万美元费用
  7. android百度定位代码,android开发:百度地图及定位的演示代码
  8. 计算机组成原理在线实验,《计算机组成原理》实验.doc
  9. Kindle阅读软件,手机阅读器软件、mobi、azw3、epub格式书籍阅读器软件分享
  10. 灵性图书馆:好书推荐-《当下的力量》
  11. navicat 连接 oracle (最全解读)
  12. PS图层混合算法之四(亮光, 点光, 线性光, 实色混合)
  13. UWB,可以应用到生活中的方方面面
  14. 常见的加密算法以及加密协议
  15. Online Judge爬虫
  16. mht文件打开后显示不正常或乱码问题的排除
  17. php浮点转int少1,PHP中浮点数计算比较及取整不准确的解决方法
  18. 生产者与消费者问题C语言实现
  19. 什么是基本表?什么是视图?两者的区别和联系是什么?
  20. java初学者的建议

热门文章

  1. pythoneducoder苹果梨子煮水的功效_苹果梨子煮水的功效是什么呢
  2. 挖掘用户反馈中的宝藏——NLP文本标签化解密
  3. 使用 Visual Studio 2005中的ASP.NET 移动控件创建电子书浏览器应用程序
  4. c语言做相册影集,制作DIY相册影集教程-如何制作影集
  5. mysql 1.42_mysql-查询(DQL)
  6. 【博学谷学习记录】超强总结,用心分享 | JavaString类知识要点总结
  7. 配置fly.js请求
  8. 打散线条lisp_cad细线模式(cad中宽线炸开后变成细线是怎么回事)
  9. 手机屏幕常见故障_触屏不灵敏、断触怎么回事?手机触摸屏的基本原理与常见问题排查方法介绍...
  10. 何为数码相机EXIF信息的等效焦距