数形结合彻底解决2个球100层楼摔坏的问题

题目:有一栋100层高楼,从某一层开始扔下的玻璃球刚好摔坏,现有两个玻璃球,试用最简便的方法确定这个恰好摔坏玻璃球的那层.

 

这是一道著名的面试题目,仅写出我的思路和解法.

 

首先从题目得出基本思路

1.第一个球应该低到高试,但不是每层必试.

2.不能有侥幸心理,第二个球在第一个球的区间里每层必试.

 

上图是简化为10层楼解法。

 

数字代表楼层,球从原点先右后上的路径对应的方格中的数字进行测试.也就是第一个球测试4\7\9\10层.如果第一个球4层坏了,第二个球测试1\2\3.如果第一个球7层坏了,第二个球测试5\6.依次类推,肯定可以测出最终的层数.这样做摔4次肯定能得出结果,是最优的方案。

 

如果把上图的每一个层看作一个1*1的正方形.上图就近似一个等腰梯形,面积为4*4/2+4*0.5=10,也就是层数.推广开来,对于边长为N.它所能测试的层数就是N*N/2+N*0.5。

 

对于M层楼,最优方案只是上图的类推。将1到M按照上图类同的方法排布,并按照先右后上的路径。这肯定是最优解。

也就是N*N/2+N*0.5〉=M。这里只要取得N的最小正整数就是最多的尝试次数。

比如100层。 N*N/2+N*0.5>=100。 解得N的最小正整数解是14。

 

下面证明解法的正确性:

将实际问题转化为数学模型是解题的一种重要方法。如果是16层楼,有很多人可能很快得到下图一直的结论。

就是先4层4层的试,然后再每层必试,在图中的顺序就是先右后上。这不是最优解,因为如果是15层的坏的话,要试7次。

 

如下图,根据我的解法得出的16层楼的最优解,最多6次

 

最优解是怎样的呢?问题已经可以转化为在坐标系的原点出发,只能先右后上的,在相同的面积下,哪一种图形的使得原点到该图形的任意一点的距离的最大值最小。

结论是: 在相同的面积中,直角等腰的三角形到达面上的任意一点的最大距离是最小的。直角等腰三角形的斜边上任意一点到达原点的距离都是一样的,也是直角等腰三角形中距离原点最大的。利用反证法,如果还有比直角等腰三角形更好的图形,必然要挖去斜边上所有的点,但是把这些点放在哪里呢?放在哪里都比现在的位置远。

 

 

 

另外,如果有三个,四个,五个,N各球应该可以类似的推出来。这些我都没有算过,请有兴趣者得到计算公式后发给我,不胜感激。

 

该题算法为本人原创,欢迎引用或转载,请务必注明作者及出处,谢谢!。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值