求解玻璃球的最大摔碎高度

分享一道大厂面试官都喜欢问的玻璃球问题 题目是这样的,现在有一座大楼,而你手中有数目不限的玻璃球,现在你想测试一下最低从几楼扔下玻璃球,玻璃球会碎掉,你会怎么做呢,如果玻璃球有数量限制,要求用最少的玻璃球得出我们想要的结果,你又会怎么做呢? ... 阅读详情

今天,一哥们带回来一道题,很有意思。题目大概是这样:

给你两个玻璃球,在最少实验次数,求出它的最大摔碎的高度,给出的摔碎的高度是1-100层楼之间,不考虑其他因素的影响。

首先,来分析一下这个问题:两次机会,最少次数,1-100层高度。最先想到的时折半的方法求解,是吧?可是,限制条件是两次机会;那行,顺序查找,可是,限制条件是最少次数;那行,折半加顺序查找,可是,还是最少次数限制了你,你只是做了一步的优化。

下面,详细的分析一下,怎么保证次数最少而且两次机会就能实验出来:

第一次的测试投掷我们不折半,而是,指定一个m,如果碎了,我们就从1-(m-1)来查找,你肯定会有疑问那还是得顺序查找,对,所以这个m的值至关重要,而怎么求解这个m呢?我们先假设m层不碎,后面我们要递增的层数要递减,第一次是m层,我们就递增m-1层,以此类推则有:

那猜测的层数为:m+(m-1)+(m-2)+......+1=99 ->m*(m+1)/2=99,为什么是99呢?因为如果99都没碎,题中告诉了范围是100,则肯定是100层碎掉。m≈14

那保持不碎的情况就是:14 27 39 50 60 69 77 84 90 95 99         

再举个碎的例子:比如14层就碎了 则为 1 2 3 4 5 6 7 8 9 10 11 12 13

面试算法03-高楼扔球求临界破碎楼层 且看题: 有100层楼,已知从某层扔下玻璃球会碎,给你两个玻璃球,请用最优策略实验出临界的破碎楼层 注意题,是给出最优实验策略,我们可不能拿一个小球从一层开始扔,然后一层一层往上加,这样的话最坏的情况下会扔99次(因为99层不管碎没碎,我们都知道结果了),而且还浪费了一个球。 那既然有两个球,可不可以用简单的折半法呢,比如50层扔一个,没碎的话,用另一个球从51层往上扔,最坏的情况下是1+49... 阅读详情

相关推荐

手把手教你用Qt和DSP28335实现串口Bootloader,附赠源码和避坑指南

本文详细介绍了如何使用Qt和DSP28335实现串口Bootloader,包括开发环境搭建、通信协议设计、Qt上位机开发、DSP端Bootloader核心实现以及应用程序工程的特殊配置。通过实战案例和源码分享,帮助开发者快速掌握嵌入式固件升级技术,提升工业设备远程升级的效率和可靠性。

weixin_29176179的博客 134

python 玻璃球在哪摔碎

d={} def T(level, ball): if d.get((level, ball)): return d[(level, ball)] if ball is 1: return level elif level is 1: return 1 elif level is 0: ...

262

高效网络流量回放:使用tcpreplay实现多目标IP的pcap重放

本文详细介绍了如何使用tcpreplay工具高效回放网络流量pcap文件,并实现多目标IP发送。通过tcprewrite编辑报文和并行回放策略,可满足安全测试、负载测试等场景需求。文章涵盖安装、基础回放、核心技巧及性能优化,帮助读者构建真实流量压力测试环境。

weixin_29297127的博客 479

谷歌面试题:两个玻璃球摔碎的楼层高度

给你两个一摸一样的球,这两个球如果从一定的高度掉到地上有可能就会摔碎,当然,如果在这个高度以下往下扔,怎么都不会碎,当然超过这个高度肯定就一定摔碎了。现在已知这个恰巧摔碎高度范围在一层楼到100层楼之间。如何用最少的试验次数,用这两个玻璃球测试出摔碎的楼高。 两个球,一个用来粗调,一个用来精调,具体做法是这样的。 首先拿第一个球到10层楼去试,如果没有摔碎,就去20层楼,每次增加10层楼。如果...

Delicia_Lani的博客 8478

sdc时钟约束2——多驱动时钟

sdc 多驱动时钟 master_clock

qq_40411444的博客 5529

如何把ORCAD 中的修改同步到PADS 中

Generate ECO file(*.eco),eco 文件的默然保存地址是在pads 的。ECO Files (*.eco),接着在文件中找到所生成的eco 文件,找到。再下来是产生eco 文件,先打开old_design.pcb,然后选择。PCB Design 前面的选项选中,意思把当前文件做为原始的比对。安装目录下(可修改eco 文件的保存目录),这里把eco 文件保存。接下来用新生成asc 文件的文件产生新的PCB 文件,新生成。不对新生成的pcb 做任何的修改,直接保存文件,这里把新文件。

智光工作室 993

100层高的大楼,丢玻璃球的问题

无意间看到这个题目,想了很久才想通,而且网上很多文章的描述得不是很清楚,在此分享一下个人看法,随便记录一下,如有不对的对方,欢迎指正,谢谢! 问题:有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层??? 题意:为了使最坏情况的投掷数最小,我们希望无论临界段在哪里,总的投掷数都不变,也就

其实我也有梦想 8613

深度伪造检测实战:轻量级频域特征 pipeline 部署指南

深度伪造检测(deepfake detection)是多媒体内容安全的核心技术,其本质是通过建模生成式篡改在像素与频域留下的微弱异常痕迹。传统端到端大模型虽在标准数据集上表现优异,却因训练域与真实场景失配、计算开销高、缺乏可解释性而难以落地。本文聚焦于工程可复现的实践路径,提出‘人脸定位→频域伪造特征提取(Xception-FCN + Frequency-Aware Masking)→轻量分类决策’三段式解耦架构,兼顾精度、延迟与可解释性。该方案已在边缘设备(Jetson Orin NX)实现单帧<48ms

weixin_33437929的博客 307

摔玻璃球(鸡蛋)查找临界楼层

题目:有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略找出这个临界楼层是第几层? 优快云和知乎上讲解这个问题的文章不少,但是都讲得不全面透彻,本文将全面考虑玻璃球个数和楼层数为任意正整数的解法。 题目中的最优策略是指用最经济的办法即最少的查找次数找出临界楼层。假设你正在参加查找临界楼层策略设计大赛,比赛规则是查找次数最少者获胜。目前球数和楼层数已知,临界楼层未知,也就是说任意一层都是潜在的临界楼层,那么使用某种策略所需查找次数可

Zhang Junjie的博客 2559

GEE聚类分析:基于sentinel-2 影像进行 K-Means 聚类分析

这篇博客介绍了如何使用 Google Earth Engine (GEE) 进行 K-Means 聚类分析,以识别感兴趣区域(ROI)内的不同地表覆盖类型。文章详细说明了从定义用户参数、准备参考区域、加载和预处理 Sentinel-2 图像,到训练 K-Means 聚类器并对图像进行聚类的完整流程。代码示例展示了如何设置参数、采样像素数据、训练聚类器,并将结果可视化。最后,还提供了将聚类结果导出到 Google Drive 的选项。通过该教程,用户可以掌握在 GEE 平台上进行地理数据聚类分析的基本方法。

此星光明博客 263

锐捷-GZ073 网络系统管理赛项赛题第1套A模块-S5配置

锐捷-GZ073 网络系统管理赛项赛题第1套A模块-S5配置

weixin_46183247的博客 767

[面试题]100层楼丢玻璃球,一旦超过某层就会破,你只有两个球。

题目: 有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层?? 思路:最简单的,扔一个到51层 ,碎了,再试后面50层 ,没碎再试前面50层,总共50次。时间复杂度较高。是个烂方法。 有没有一种方法,能分段查找呢。一个球均匀分段的扔,比如 20层20层的扔,如果在4...

Esy_Hong 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

玻璃球临界层问题

假设我们从第x层开始,然后从x + (x-1)层,x + (x-1) + (x-2)层,依此类推。我就在想,是否可以分区,将100层楼,每10层楼分一个区,先将第一个球在第10层,第20层,第30层扔,假如在第30层摔碎,那么临界层一定在第21-30层之间。因为我们希望找到使尝试次数最小的楼层,我们需要在所有可能的i层中找到最大值的最小值,即min(max(dp(i-1, k-1), dp(n-i, k)))。球碎了,那么我们需要在i-1层和k-1个球的情况下继续寻找,即dp(i-1, k-1)。

sterlingjone1的博客 1384

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[益智]:从高楼抛玻璃球,用什么最优策略得到临界层?

题目描述 有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层??? 题目解答 方法一: 只用1个球就可以了,从2楼开始扔,如果直接摔碎,说明1层是最优解;没碎的话就一直扔,直到球从第x层扔下破碎,所以临界层就是x-1层。 方法二: 每次肯定是由低的楼层往高的楼层尝试,直到在楼层f(k),第一个球已经碎掉了,记录上一个尝试的楼层为f(k-1),在此楼层,玻璃球不会碎,所以接下来要尝试 f(k-1)+1,

AngelDg的博客 1756

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

100层楼两个玻璃球找临界楼层所需要的次数

max(i,1+F[n-i])表示第一次从第i层楼扔,如果碎了,临界楼层一定在1~i层,但是现在只有一个玻璃球了,所以只能从1楼一层层往上找,直到i-1层。如果没碎,临界楼层一定在i+1~n层,共有n-i层,因为现在有两个玻璃球,所以和只有一个球那样找,有两个玻璃球找的次数为F[n-i],加上第一次扔的1次,共1+F[n-i]次。对于第n层楼,F[n]=min(max(1,1+F[n-1]),max(2,1+F[n-1]),max(3,1+F[n-3]),…,max(n-1,1+F[1]))。

m0_73801775的博客 951

[百度面试题]100层楼,球可能会在某一层楼摔坏,问用2个球,最坏情况下几次测试可以找出该楼层

该题还可以扩展,比如说给更多的球,如3个球,多少次测试可以找出楼层。分析如下:用动态规划解这个问题设f(a, b)为a个球做b次测试可以测试到的楼层数,可以确定的楼层数即为f(a, b) + 1,因为第1层不需测试,需要测试的楼层号仅仅为[2, f(a, b) + 1]共f(a, b)层,也就是a个球b次测试可以测试到的楼层数。考虑第1次测试,测试的楼层记为x:1)如果球破了,就需要测试x下面的楼层,还剩下a-1个球b-1次测试,测试的楼层数为f(a - 1, b - 1)。2)如果球没有破,那么需要测试x

lzshlzsh的专栏 1万+

动态规划--100层楼2只鸡蛋最少次可以测试最高楼层不摔破

100层楼2个鸡蛋原题目:100层楼2个鸡蛋最少需要几次测试,才能得到摔破鸡蛋的楼层; 转换题目:两个鸡蛋,进行k次测试,最多可以测试多少层?分析:第1个鸡蛋测试所在的楼层高度为k层。 ①如果第1个鸡蛋在第k层摔破了,第二个鸡蛋就可以从第1层开始慢慢测试,最多k次可以测试到准确楼层; ②如果第1个鸡蛋在k层没有摔破,这个时候就只剩下k-1次机会了,第2次测试的时候第1个鸡蛋就可以在第k+(k-

LUCKYSTAR_12的星空 4132

Google扔玻璃球面试题

今天得到app的一片文章中提到了一些面试题,其中有一Google面试题如下: 给你一个一摸一样的球,这两个球如果从一定的高度掉到地上有可能就会摔碎,当然,如果在这个高度以下往下扔,怎么都不会碎,当然超过这个高度肯定就一定摔碎了。现在一直这个恰巧摔碎高度范围在一层楼到100层楼之间。如何用最少的试验次数,用这两个玻璃球测试出摔碎的楼高。 文中给的答案是: 两个球一个用来做粗调,一个

凝眉 4109

两个玻璃球 测试极限高度

一道有趣的智力题目: 已知,玻璃球从某高楼落到地面会摔碎,楼的最大高度为100层,给你两个玻璃球,请你最快的测出,能使玻璃球摔碎的最低楼层... 两个玻璃球 思路1:蛮力法 如果用蛮力法, 从1楼,2楼,3楼,一层一层,抛球测试,肯定能测出最低楼层,但效率太低... 思路2: 二分法 用...

weixin_34392906的博客 673

两个玻璃球求临界楼层问题

问题描述: 有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层。 问题答案: 考虑best-worse case最坏情况下最优。也就是说假如你的算法是从第一楼逐楼往上试,那么相应最坏的情况是在100楼破,相应的是一百次。 这种情况下最优策略也就是从14楼开始递减间隔的办法,wor

Filter_CPH的博客 6936

100层楼有一个鸡蛋,如果确定刚好摔碎的那个楼层,最坏情况下最少需要摔多少次?

问题:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。 分析:这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。先从最简装的一块石头考虑,很显然,X(1,1) = 1X(1,2) = 2X(1,3) = 3.X(1,i) = i再考虑二块石头,显而易见X

Challenge Next Challenge 8432

最高安全横档问题(100层台阶瓶子不摔碎的最高高度)

最高安全横档问题(100层台阶瓶子不摔碎的最高高度)

满天繁星 6404

测试杯子在哪个楼层破碎的问题

题目描述: 有一种玻璃杯质量确定但未知,需要检测。 有一栋100层的大楼,该种玻璃杯从某一层楼扔下,刚好会碎。 现给你两个杯子,问怎样检测出这个杯子的质量,即找到在哪一层楼刚好会碎? 题目分析: 首先两个杯子的质量是相同的 如果杯子从第n层掉下来没有碎,那么从第小于n层的任意层丢下去都不会碎 如果杯子从第n层掉下来碎了,那么从第大于n层的任意层丢下去都会碎 一个扔出去但...

草帽小子的博客 3291

用2个玻璃球找到从一100层的大楼的某一层落下刚好会摔碎,如何制定最优策略?

知乎答案

Hello world! 1万+
上一篇: 浅析Hive的四种排序方式
下一篇: 灯泡问题,题目见下文
DM_Source
博客等级 码龄9年 33粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值