两个鸡蛋--一道Google面试题

原创 2006年12月07日 22:11:00

前两天翻译Python文档翻译到手软。今天不想翻译了,上网闲逛,在http://programming.reddit.com/ 上看到一道有趣的题目,据说是清华东门某家公司的面试题。原文地址http://classic-puzzles.blogspot.com/2006/12/google-interview-puzzle-2-egg-problem.html

两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。

下面是偶的思路。

这是一个很典型的动态规划问题。用确定minNum[n]表示鸡蛋从高n层的楼摔下不碎需要的最小次数。则有

转移方程:

minNum[n ] = min(1 + max(i – 1, minNum[n-1])) for 1<=i <= n

边界条件:

minNum[0] = 0; minNum[1] = 1

假设i是第一次扔鸡蛋的楼层,如果破了,则为了确定下面楼层中的安全位置,需要从第一层挨着试,需要i-1次,不碎的话上面还有n-i层,还剩两个鸡蛋,需要minNum[n-i]次。

Python代码如下:

 






偶的思路适合计算机蛮干。原作者的思路更简单。拿具体的数字作例子,假设100层楼扔16次可以搞定,那么第一次可以且最矮必须从16层扔。碎了好说,从第一层开始试,不碎的话还有15次机会,同理最矮可以从31层开始扔

每次可以扔的最矮楼层如下

16

16 + 15 = 31

31 + 14 = 45

45 + 13 = 58

58 + 12 = 70

70 + 11 = 81

81 + 10 = 91

91 + 9 = 100

超额完成目标。假设需要扔n次,则有

n + (n-1) + (n-2) + … + 1 >= 100

n (n +1) >= 200

min(n) = 14

好好的鸡蛋摔碎了多可惜,Google有钱也不能这样烧啊。打碎了搅拌均匀,加少许凉开水。一定要是凉开水,蒸了才不会有气泡,不然蒸出来和蜂窝似的,又难看又难吃。放到电饭锅蒸格上和米饭一起热。跳闸了再洒少许香葱末和香油,盖上盖子捂两分钟,美味的鸡蛋羹就出锅了。

 

Google的一道面试题的推广(扔鸡蛋不破的层数,2个,3个,n个鸡蛋呢)

Google的面试题在论坛炒得很火,今年题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个...
  • chhuach2005
  • chhuach2005
  • 2014-09-08 15:07:38
  • 2278

Google面试题-高楼扔鸡蛋问题

Google面试题-高楼扔鸡蛋问题 简单详尽的理解思路
  • lonelyrains
  • lonelyrains
  • 2015-06-09 18:06:30
  • 7298

经典谷歌面试题:高楼扔鸡蛋

经典谷歌面试题:高楼扔鸡蛋存在某T层高楼,在该高楼中存在这样的一层,在该层之下的所有楼层扔鸡蛋,鸡蛋摔到地上都不会碎,还可以继续扔;在该层及该层之上的所有楼层,扔下鸡蛋都会摔碎。 目前手里有两个鸡蛋...
  • siegecat
  • siegecat
  • 2016-09-12 21:38:21
  • 666

Google面试题之经典鸡蛋问题

还是有些晕。。。 Q: 只给你二个鸡蛋,你能上100层楼,你想知道鸡蛋的硬度。鸡蛋可能很硬或很脆弱,如果鸡蛋从第m层掉下而没破裂,而从第m+1层掉下就破裂了,那么这个鸡蛋的硬度就是m。你需要找出这个m...
  • buaa_shang
  • buaa_shang
  • 2013-09-25 10:39:43
  • 2550

两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法

题目:问题:一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损。现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2...
  • Frimish
  • Frimish
  • 2015-12-25 11:32:07
  • 3174

谷歌智力题:扔鸡蛋

只给你二个鸡蛋,你能上100层楼,你想知道鸡蛋的硬度。鸡蛋可能很硬或很脆弱,如果鸡蛋从第m层掉下而没破裂,而从第m+1层掉下就破裂了,那么这个鸡蛋的硬度就是m。你需要找出这个m和在最坏情况下最少试验次...
  • Athenaer
  • Athenaer
  • 2013-03-01 10:24:15
  • 3212

面试题目:2个鸡蛋100层楼问题

一道非常经典的面试题目,给你两个鸡蛋,在一幢100层的大楼里面,至少扔几次可以测出让鸡蛋破碎的临界高度?最朴素的做法是从100层一直扔到1层,不过这样明显不是最优的。这题目其实可以转化为dp求解,假设...
  • zjck1995
  • zjck1995
  • 2016-09-30 00:16:43
  • 1603

两个鸡蛋--一道Google面试题

前两天翻译Python文档翻译到手软。今天不想翻译了,上网闲逛,在http://programming.reddit.com/ 上看到一道有趣的题目,据说是清华东门某家公司的面试题。原文地址http:...
  • TravelInHistory
  • TravelInHistory
  • 2006-12-07 22:11:00
  • 17083

妙解谷歌压箱底面试题:如何正确的从楼上抛鸡蛋

授权转载自大数据文摘 ID:BigDataDigest作者:Marcin Moskala关于编程工作有很多很不错的面试谜题。新年之际,我把压箱底儿的一道好题,同时也是传说中谷歌招聘官最喜欢问的一道题找...
  • zw0Pi8G5C1x
  • zw0Pi8G5C1x
  • 2018-01-02 00:00:00
  • 1029
收藏助手
不良信息举报
您举报文章:两个鸡蛋--一道Google面试题
举报原因:
原因补充:

(最多只允许输入30个字)