题目:有一栋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各球应该可以类似的推出来。这些我都没有算过,请有兴趣者得到计算公式后发给我,不胜感激。

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

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

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

    题目:有一栋100层高楼,从某一层开始扔下的玻璃球刚好摔坏,现有两个玻璃球,试用最简便的方法确定这个恰好摔坏玻璃球的那层. 这是一道著名的面试题目,仅写出我的思路和解法. 首先从题目得出基本思路 1. ...

  2. 数形结合「求解」希尔伯特第13个数学难题

    法布是芝加哥大学(University of Chicago)的一名拓扑学家,他对自己最近的在某个问题上的一次失败感到非常高兴. 有一个问题是德国数学家大卫 · 希尔伯特在20世纪初预测的23个当时尚 ...

  3. 二元函数对xy同时求导_陕西省特级教师魏玉英:让“数形结合思想”浸润在教学中——《二元一次方程与一次函数》同课异构课例分析...

    魏玉英,安康市平利县城关初级中学数学教师,陕西省特级教师,陕西省教学能手,安康市突出奉献专家 所谓数形结合,就是根据数学问题的题设和结论之间的内在联系,既分析其数量关系,又掲示其几何意义,使数量关系和 ...

  4. 平面直角坐标系中的旋转公式_“柳暗花明又一村” ,数形完美结合,数学中的大哲学 学霸数学体验课数与形的完美结合平面直角坐标系回顾...

    上周,我们总结了讲述"数"的前世今生的<数的发展史>及超级接地气的<从有理数开始>两节体验课程后,,今天来体验数学中一个重要的哲学思想:<数与形的完美 ...

  5. 【深度学习】数形结合的图像处理(文末介绍了一种新型网络)

    [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 文章目录 [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 前言: OpenCV介绍 1 读取图像 2 修改图像尺寸 3 矩阵操作处理 ...

  6. UVA 1451 Average 数形结合

    借此把数形结合相关的知识补充补充,戳这里→浅谈数形结合思想在信息学竞赛中的应用 emmmmm求区间斜率最大的问题,用单调队列去维护下凸曲线,感觉有些博客解释的蛮清楚的,比如这里→戳 注意一下:下标的问 ...

  7. TypeError: __init__() got an unexpected keyword argument ‘任意数‘的原因及解决办法

    本篇文章主要讲解 pymysql模块查询数据时报错 "TypeError: init() got an unexpected keyword argument '任意数'的原因及解决办法&q ...

  8. ORA-01795: 列表中的最大表达式数为1000的解决方法

    ORA-01795: 列表中的最大表达式数为1000的解决方法 参考文章: (1)ORA-01795: 列表中的最大表达式数为1000的解决方法 (2)https://www.cnblogs.com/ ...

  9. 证明的思路 —— 数形结合

    数缺形时少直观,形少数时难入微:数形结合百般好,隔离分家万事休.-- 华罗庚 a×b=b×aa\times b=b\times a:乘法交换律的证明: 矩形的面积: 0. 平方和公式 1. 奇数之和是 ...

最新文章

  1. GNN 笔记1 图的概念
  2. Intel Realsense D435 pyrealsense set_option() rs.option 可配置参数翻译
  3. 使用Java打印字符串表格(中英文内容不乱)
  4. vrp车辆路径问题 php,车辆路径问题(VRP)
  5. python excel数据分析实战_一次完整的数据分析实战!仅用4步,效率吊打Excel和Python...
  6. C++ 类的const成员函数
  7. 多系统服务器数据备份软件,护卫神好备份系统
  8. 2017.9.12 人员雇佣 失败总结
  9. java中的类方法和实例方法_下面关于Java语言中实例方法和类方法的说法,哪几项是对的?...
  10. HDOJ-1232 畅通工程
  11. swun 1766 我的悲剧不可能那么好数
  12. 鸿蒙手表定位功能Demo体验,适用儿童、老年和外出旅游安全市场
  13. 一个球绳命最后的高度哈哈
  14. SNN综述(2):生物可解释的脉冲神经网络
  15. Android 构建简单app 步骤
  16. python pdf和图片互转
  17. oracle导出exp步骤,oracle数据导出导入(exp/imp)
  18. 百度地图添加多个marker点位标注
  19. 抖音小程序实践三:接口开发指南
  20. 低配置高自由度游戏_高/低游戏

热门文章

  1. 「 C++ 宏 」“DDX动态数据交换与DDV动态数据验证”浅谈
  2. 怎么解决8080端口号频繁被占用?
  3. 【量化系列】使用聚宽实现净利润跳空策略
  4. CLUSTER SLOTS
  5. oracle tabe unlock_Oracle数据库之统计信息锁住导致收集统计信息失败引起sql执行异常...
  6. v-if和v-for为什么不能一起使用
  7. java发送邮件到qq邮箱_Java利用javax.mail发送邮件至QQ邮箱
  8. [LibreOJ Round #11]Misaka Network 与测试
  9. 【Linux】Linux 学习笔记2015(基础篇)
  10. 最新支付牌照续展结果公布,本元支付等3家中止机构续展成功