百度面试题 :玻璃球 临界值

探讨使用两个玻璃围棋子确定100层高楼中使棋子破碎的最低楼层的最优策略。首先介绍等分段求最小值的方法,并给出解析过程;随后提出更优策略,通过逐步增加搜索间隔确保每段搜索次数一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”


解答:

(1)等分段求最小值:这种算法先假设把大楼分成等高的 x 段,这样在最差的情况下,要确定临界段,我们需要投掷 100/x-1 次,确定了临界段之后要确定临界层,我们需要再投掷 x-1 次。这样,问题就成了求函数 f(x)=(100/x-1)+(x-1) 的最小值问题。由于 f(x) 存在最小值且只有一个驻点,所以当 x=10 时 f(x) 取得最小值,最小值为18。

(2)上述解法并不是最优的,随着临界段的提高,我们搜索临界段的次数增加,但是在临界段内搜索临界层的次数却是一个常数,所以临界段越高,总的搜索次数就越多。那么我们能不能这么考虑,随着临界段搜索次数的增加(每次增加1),如果我们能够让在此临界段内搜索临界层的搜索次数减1,那么就可以保证在任何一个临界段,搜索次数都保持不变。设第一次投掷从第x层开始,那么在第一个临界段内搜索临界层的次数总和是 1+(x-1)=x。为了保证第2次总的搜索次数也为x,我们设第二次从第y层开始,要求:1+(y-x)=x,从而y=2x-1  (2x=x+(x-1))。第三次搜索从z开始,为保证总的搜索次数也为x,要求:2+(z-(2x-1))=x,从而z=3x-3  (z=x+(x-1)+(x-2)),以此类推,最终的投掷高度:last=x+(x-1)+(x-2)+..1>=100, x=13.6 即14次





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值