题目:如果你有两个鸡蛋,并且想搞清楚在不摔破鸡蛋的前提下最高能从多高的地方往下扔鸡蛋,你会采取怎样的做法?最优的解决方案是哪种?

解题思维:如果鸡蛋刚好在n层碎掉,那么说明鸡蛋在n-1层不会碎。

设 楼层高度为m层 ,先用第一个鸡蛋在m/2层扔下

1)如果碎掉,即最坏可能,第二个鸡蛋只能从1层到(m/2-1)层继续依次扔下,测试刚好碎掉的楼层n,这样需要操作n次

2)如果未碎掉,则我们再将第一个鸡蛋,再从m/2到m层的中间层进行抛下,重复操作,缩短楼层范围。

代码实现:参考二分法

package test;import java.util.Date;public class Eggs {public int n;//碎鸡蛋楼层boolean isBreak(int m){//判断鸡蛋在m层扔下是否碎掉if(m>=n){return true;}return false;}int trowsEggs(int p,int q){//楼层范围p-->q int mid=(p+q)/2;if(isBreak(mid)){//在中间层抛下第一个鸡蛋,判断是否碎掉for(int i=p;i<mid;i++){if(isBreak(i)) {return i-1;}}}return trowsEggs(mid,q);//未碎,缩短判定范围}public static void main(String[] args) {Eggs egg=new Eggs();egg.n=(int)((Math.random())*29999999+1);//随机碎鸡蛋楼层long time1=new Date().getTime();int j=egg.trowsEggs(1, 30000000);//计算所得楼层long time2=new Date().getTime();System.out.println("鸡蛋在"+j+"层不会摔碎,耗时:"+(time2-time1)+"ms");}
}

【程序员思维】用两个鸡蛋判断鸡蛋在多少楼层扔下不会碎相关推荐

  1. 程序员思维修炼:如何从新手成为专家

    在"职场跃迁工具:德雷福斯模型及应用2例"中,给大家分享了"德雷福斯模型": 这个模型,来自<程序员思维修炼>这本书: <程序员思维修炼> ...

  2. 程序员智力题:100层楼扔鸡蛋,确定鸡蛋摔碎的楼层N

    程序员笔试智力题:建筑楼有100层,若曾第N层或更高的楼层扔下来,鸡蛋就会摔碎.若从第N层以下的楼层扔下鸡蛋不会摔碎.给你两个鸡蛋,请找出N,并要求最差情况下扔鸡蛋次数最少. 分析:试着从10楼开始扔 ...

  3. 大牛告诉你,只有突破程序员思维,才不会沦为码农!

    过去我曾一直认为程序员是依靠他们的技术在编程,也是因为技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的 ...

  4. 程序员思维是什么?程序员思维从哪里来?程序员思维到哪里去?

    程序员思维是什么? 程序员思维从哪里来? 程序员思维到哪里去? 好吧,这是三个终极的问题.没有标准答案,也没有什么不标准的答案.我只是试图给出自己的一个思考的总结. 再解释程序员思维是什么问题这个问题 ...

  5. 程序员思维修炼读后感

    <程序员思维修炼>读后感 程序员思维修炼的这本书,主要讲了程序员不同的职业阶段,以及常见思维误区,以及解决方案,给大家在各自工作中提供一些帮助,值得阅读. 通过本书的阅读,解决了我一个很重 ...

  6. 从码农到工匠,程序员必备的两本提升自我修养的书

    软件设计不仅是"技术"(Technique),更是一门"技艺"(Craftsmanship),要想控制复杂度,防止系统腐化.我们不能只满足做一个搬砖的" ...

  7. 匆匆那年之Java程序员之最近两周的面试总结:

    匆匆那年之Java程序员之最近两周的面试总结: (一):匆匆那年之来帝都之初: 还记得那是2011年的冬天,我们一行20多个同学一起来到了这个一直向往的城市首都,刚到北京是凌晨4点30,负责送我们的老 ...

  8. 【To Do!】程序员面试金典——18.8子串判断

    程序员面试金典--18.8子串判断 Solution1:我的答案 利用了C++ STL中自带的find函数,有点投机取巧的意思,正统方法是用trie树(单词查找树)来做,那就麻烦了许多 class S ...

  9. 程序员面试金典——17.4无判断max

    程序员面试金典--17.4无判断max 参考网址: https://www.nowcoder.com/practice/b0a82250677a4fabb0bc41053fa05013?tpId=8& ...

  10. 程序员思维僵化_僵化趋势

    程序员思维僵化 重点 (Top highlight) When I started this whole crazy ride, I was expecting it to die down righ ...

最新文章

  1. 作业六:图像编码相关概念
  2. 数论基础--洛谷P1072 Hankson 的趣味题
  3. mysql 特殊字符
  4. 发布乐维Webgis平台1.0 Demo,欢迎加入参与制作前端
  5. mysql查看隔离模式_InnoDB 隔离模式对 MySQL 性能的影响
  6. optee的启动过程
  7. tensorflow随笔-变量
  8. JDK1.8并发包中的类
  9. yum php 降级 5.3,CentOS 5.3 通过yum升级php的方法
  10. 2.图像作为函数 | 生成高斯噪音_8
  11. java name_Java枚举name()方法及示例
  12. 腾达W311MA无线网卡驱动安装 ubuntu16.04
  13. 易班轻应用授权开发与AES解密
  14. 怎么彻底卸载cad2017_cad2017没卸载干净怎么办?
  15. CNN网络的神经元是像素还是图片
  16. 电脑桌面计算机图标在哪,电脑计算机图标在哪
  17. 管家婆财贸双全ⅡTOP 期间202012的损益类科目本币(外币或者数量)余额不为零,不能年结存。
  18. 20140417本人分别用12种编程语言编写的MasterSeeker热键辅助工具软件[晓亮原创]
  19. conda创建虚拟环境失败
  20. # Windows下关于安装Geany编辑器过程中的一点小发现(可能对初次安装的人有用)

热门文章

  1. Lubuntu下启用Compiz
  2. Xcode 模拟器(Simulator)进行录屏,保存成mp4格式
  3. mysql 1033_mysql报错1033 Incorrect information in file: ''''xxx.frm''''问题的解决方法(图)...
  4. 京东实习测开HR面(过)
  5. webview在android8.0,解决Android8.0系统应用打开webView报错
  6. Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
  7. 仿宋小二在html中怎么设置,CSS 网页中正确设置字体的方法 - 文章教程
  8. 汇编语言0x2c,ARM汇编语言(4) 指令、伪操作、伪指令学习
  9. SparkLink星闪技术之SLB概述
  10. 微信小程序申请医疗-就医服务类目解决办法