C 演算法集錦(12) 高樓扔雞蛋

2021-10-20 07:34:11 字數 2201 閱讀 7875

我有一籮筐的雞蛋,我可以給你兩個。

我有一棟一百層的樓,我想讓你站在第一百層,以最少的次數幫我測出來雞蛋最多扔到哪一層不會碎。

你放心扔,如果沒碎,不用去撿,我直接補給你乙個。

事成之後,這張支票你隨便填。

_佰_拾_圓
咋樣,有什麼想法嗎?

我說說我的想法,首先,第二個雞蛋肯定一層一層扔啊(不是兩層兩層扔)。

那第乙個雞蛋呢?

我是這麼想的啊,土是土了點,但我覺得很有效。

1、肯定不能·一層一層扔

2、如果兩層兩層扔,最多扔100/2

+(2-

1)=51次即可(去尾法)。

3、如果三層一扔,最多扔100/3

+(3-

1)=35次

4、···

5、如果八層一扔,最多扔100/8

+(8-

1)=19次

6、如果九層一扔,最多扔100/9

+(9-

1)=19次

7、十層一扔也是19次(7層一扔是20次)

8、十一層一扔,也是19次

9、十二層一扔,19次

10、十三層,19次

此後再無低於或等於19次的機會了(以十九層(當前最低次數)為限)

對第乙個雞蛋而言

扔的層數/砸碎概率

一次兩次

三次四次

五次六次

七次八次

九次十次

十一次十二次

八層0.08

0.08

0.08

0.08

0.08

0.08

0.08

0.08

0.08

0.08

0.08

0.08

九層0.09

0.09

0.09

0.09

0.09

0.09

0.09

0.09

0.09

0.09

0.09

十層0.10

0.10

0.10

0.10

0.10

0.10

0.10

0.10

0.10

0.10

十一層0.11

0.11

0.11

0.11

0.11

0.11

0.11

0.11

0.11

十二層0.12

0.12

0.12

0.12

0.12

0.12

0.12

0.12

十三層0.13

0.13

0.13

0.13

0.13

0.13

0.13

對於第二個雞蛋而言:(記扔的層數為n)

如果在中間層數碎了,概率都是:1/(n-1),如果是最後一次扔都沒碎的話,概率是:1/(100%n-1),如果n是10的話,直接不用算了。

接下來就會發現這個期望實在是太難算了。

同時,也有了乙個新的問題:

如果我選了扔十層,我第一次扔十層,第二次一定要扔十層嗎?我不能扔九層?不能扔十一層?我一定要每次都是十層?

還好我還沒去算期望,不然白算了。

還好我事先分析的透徹,不然就浪費半個小時了。

後來,我看到了這麼一種解法:

說是一直以同樣的層數匹配下去,會對高層雞蛋不公平。

但是呢,考慮到上面的情況,給出了一種優化,即每次扔的層數遞減。

為什麼不是迪迦呢?對高層的雞蛋更不公平了。

所以,要扔到一百層,第一次扔多少呢?我們算一下啊:

1+2+3+4+···+14>100

1+2+3+4+···+13<100

所以第一次扔14層,第二次13層····最後會多5是吧,那就看你心情願意放哪兒去了。比如我就···5層,3層,2層這樣了。

這樣就能基本保證投蛋次數普遍在14次波動。

嗯嗯,不錯。

高樓扔雞蛋

雞蛋數量為m,高樓層數為n,使用最小次數p去找到扔下雞蛋會碎的最小層數 首先第0層,則p 0 雞蛋數量m 0時,則p無法計算,也預設為p 0 然後第1層,則p 1 雞蛋數量m 1時,則最壞情況 p n 可以假設從k層扔下,倘若碎了,題目就變成了雞蛋數量為m 1,樓層則變為了k 1,扔蛋最小次數p 1...

妙 高樓扔雞蛋的數學解法

數學方法 參考 關於高樓扔雞蛋問題,本文只對動態規劃方法進行概括性的描述,具體看這裡。k個雞蛋 n 層樓,問至少嘗試多少次可以找到雞蛋不碎的臨界樓層,求最少次數m 設dp k n 表示k個雞蛋n層樓要嘗試的最少次數 dp k n min 1 x n min min1 x n max dp k 1 x...

每日一題 高樓扔雞蛋

2020.04.11 這題其實正常思路還可以,有點類似b站李永樂老師講的方法。核心還是尋找子問題,dp i j 表示一共有i層j個雞蛋。可以把dp i j 分為先在第m層扔一次,在剩下的結果裡繼續分析。dp i j min dp i j max dp m j 1 dp n m j 第乙個min對應最...