数形结合彻底解决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各球应该可以类似的推出来。这些我都没有算过,请有兴趣者得到计算公式后发给我,不胜感激。
该题算法为本人原创,欢迎引用或转载,请务必注明作者及出处,谢谢!。
数形结合彻底解决2个球100层楼摔坏的问题相关推荐
- 数形结合彻底解决2个球100层楼摔坏的问题 .
题目:有一栋100层高楼,从某一层开始扔下的玻璃球刚好摔坏,现有两个玻璃球,试用最简便的方法确定这个恰好摔坏玻璃球的那层. 这是一道著名的面试题目,仅写出我的思路和解法. 首先从题目得出基本思路 1. ...
- 数形结合「求解」希尔伯特第13个数学难题
法布是芝加哥大学(University of Chicago)的一名拓扑学家,他对自己最近的在某个问题上的一次失败感到非常高兴. 有一个问题是德国数学家大卫 · 希尔伯特在20世纪初预测的23个当时尚 ...
- 二元函数对xy同时求导_陕西省特级教师魏玉英:让“数形结合思想”浸润在教学中——《二元一次方程与一次函数》同课异构课例分析...
魏玉英,安康市平利县城关初级中学数学教师,陕西省特级教师,陕西省教学能手,安康市突出奉献专家 所谓数形结合,就是根据数学问题的题设和结论之间的内在联系,既分析其数量关系,又掲示其几何意义,使数量关系和 ...
- 平面直角坐标系中的旋转公式_“柳暗花明又一村” ,数形完美结合,数学中的大哲学 学霸数学体验课数与形的完美结合平面直角坐标系回顾...
上周,我们总结了讲述"数"的前世今生的<数的发展史>及超级接地气的<从有理数开始>两节体验课程后,,今天来体验数学中一个重要的哲学思想:<数与形的完美 ...
- 【深度学习】数形结合的图像处理(文末介绍了一种新型网络)
[深度学习]数形结合的图像处理(文末介绍了一种新型网络) 文章目录 [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 前言: OpenCV介绍 1 读取图像 2 修改图像尺寸 3 矩阵操作处理 ...
- UVA 1451 Average 数形结合
借此把数形结合相关的知识补充补充,戳这里→浅谈数形结合思想在信息学竞赛中的应用 emmmmm求区间斜率最大的问题,用单调队列去维护下凸曲线,感觉有些博客解释的蛮清楚的,比如这里→戳 注意一下:下标的问 ...
- TypeError: __init__() got an unexpected keyword argument ‘任意数‘的原因及解决办法
本篇文章主要讲解 pymysql模块查询数据时报错 "TypeError: init() got an unexpected keyword argument '任意数'的原因及解决办法&q ...
- ORA-01795: 列表中的最大表达式数为1000的解决方法
ORA-01795: 列表中的最大表达式数为1000的解决方法 参考文章: (1)ORA-01795: 列表中的最大表达式数为1000的解决方法 (2)https://www.cnblogs.com/ ...
- 证明的思路 —— 数形结合
数缺形时少直观,形少数时难入微:数形结合百般好,隔离分家万事休.-- 华罗庚 a×b=b×aa\times b=b\times a:乘法交换律的证明: 矩形的面积: 0. 平方和公式 1. 奇数之和是 ...
最新文章
- GNN 笔记1 图的概念
- Intel Realsense D435 pyrealsense set_option() rs.option 可配置参数翻译
- 使用Java打印字符串表格(中英文内容不乱)
- vrp车辆路径问题 php,车辆路径问题(VRP)
- python excel数据分析实战_一次完整的数据分析实战!仅用4步,效率吊打Excel和Python...
- C++ 类的const成员函数
- 多系统服务器数据备份软件,护卫神好备份系统
- 2017.9.12 人员雇佣 失败总结
- java中的类方法和实例方法_下面关于Java语言中实例方法和类方法的说法,哪几项是对的?...
- HDOJ-1232 畅通工程
- swun 1766 我的悲剧不可能那么好数
- 鸿蒙手表定位功能Demo体验,适用儿童、老年和外出旅游安全市场
- 一个球绳命最后的高度哈哈
- SNN综述(2):生物可解释的脉冲神经网络
- Android 构建简单app 步骤
- python pdf和图片互转
- oracle导出exp步骤,oracle数据导出导入(exp/imp)
- 百度地图添加多个marker点位标注
- 抖音小程序实践三:接口开发指南
- 低配置高自由度游戏_高/低游戏
热门文章
- 「 C++ 宏 」“DDX动态数据交换与DDV动态数据验证”浅谈
- 怎么解决8080端口号频繁被占用?
- 【量化系列】使用聚宽实现净利润跳空策略
- CLUSTER SLOTS
- oracle tabe unlock_Oracle数据库之统计信息锁住导致收集统计信息失败引起sql执行异常...
- v-if和v-for为什么不能一起使用
- java发送邮件到qq邮箱_Java利用javax.mail发送邮件至QQ邮箱
- [LibreOJ Round #11]Misaka Network 与测试
- 【Linux】Linux 学习笔记2015(基础篇)
- 最新支付牌照续展结果公布,本元支付等3家中止机构续展成功