本文主要是介绍20240620每日一题-测试瓶子的硬度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
小明用2个玻璃瓶,在总高88层大楼测试瓶子硬度,拿1个瓶子从某层摔下去,瓶子没摔碎,到更高层去摔,如果碎了,拿另1瓶子到更低层摔
问测试出瓶子最大硬度最少摔几次?
分析
1只有1个瓶子
为了保证一定测出瓶子的硬度,只能一层一层测试,最多可能88次
2有足够的瓶子
则可以使用二分去测试,88层,最多7次
3 瓶子只有2个
如果用1个瓶子二分去测试,在44层摔,摔碎了,恰好瓶子硬度是43的话,这时只有1个鸡蛋了,只能再摔43次了
可以尝试,43层不是最优
4 此题解题关键
尽量让第1个瓶子多测试几次
如果第1个瓶子碎了,尽量区间范围小(因为只剩第2个瓶子,必须从下到上逐一测试),如下图最少测试13次就可以测试出瓶子的硬度
上述测试方法,保证每个区间加上前面扔的次数都是13次,最大可以测到90层
如果硬度在1~90范围内,则可以13次测试出瓶子的硬度
请根据上图画出摔12次,最大可以测出多少层的硬度?
这篇关于20240620每日一题-测试瓶子的硬度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!