騰訊大廈有39層的問題解決方案。

2021-09-02 21:00:35 字數 992 閱讀 3277

[size=large]問題:[/size]

* 等於或高於它的樓層,扔下玻璃珠,玻璃珠一定會碎。玻璃珠碎了就不能再扔。現在讓你設計一種方式,使得在該方式下,最壞的情況扔的次數比其他任何方式最壞的次數都少。也就是設計一種最有效的方式來確定臨界樓層

[size=large]解決方法[/size]

使用者隨機選一層i,扔下去,有兩個結果:

碎掉,或者沒有碎掉。

1.如果碎掉,去試驗前i-1層,那麼最多需要i-1次再加上碎掉的那一次,最多就是i次。

2.如果沒有碎掉,等於說從第i+1層往後,也還是有兩個彈珠,這就回到了遞迴的思路上了。

在這種沒有碎掉的情況下,假如總共有n層,那麼n層的最多次數等於n-i層的最多次數。所以

針對使用者隨機選擇的這一層i, 以上1和2兩種情況, 求其最大值就是最差情況下的次數。

使用者隨機選擇的這個i,也可以變化的,取值 1,2,3...n. 那麼我們就會得到不同的值。

針對1,2,3...n. 會有n個,所有這些值中取最小,就是最優解。 用f(n)表示這個最優解,那麼f(0)由於沒有樓層,所以一定等於0,也就是說不需要實驗。

f(0) = 0;

f(n)= min(max(1, f(n-1) + 1), max(2, f(n-2)+ 1)... max(n, f(0)+ 1))

f(0) = 0;

f(1) = 1;

f (2) = min(max(1, f(1)+ 1), max(2, f(0) + 1)) = 2;

可以使用遞迴演算法求得其值,最終的結果是9次。

[size=large]下面是程式碼[/size]

[size=large]

列印結果:

[/size]

optimal steps:9

selections:[3,11,18,24,29,33,36,38,39]

[size=xx-large]完畢[/size]

Jar Hell 問題解決方案

最近看到溫紹錦的jvm基礎,裡面看到這個jar hell問題的解決方法,之前遇到過一次,是乙個資源檔案,當時覺得挺麻煩,不知道還有這個方法,很棒,特地整理了下,記錄到這裡來,這個部落格開了好長時間了,一直以來也懶得寫東西,以後會堅持更新些。classloader classloader thread...

top K問題解決方案

1.使用最大最小堆。求最大的數用最小堆,求最小的數用最大堆。2.quick select演算法。使用類似快排的思路,根據pivot劃分陣列。3.使用排序方法,排序後再尋找top k元素。4.使用選擇排序的思想,對前k個元素部分排序。5.將1000 個數分成m組,每組尋找top k個數,得到m k個數...

Ajax post亂碼問題解決方案

今天測試乙個ajax元件的時候遇到亂碼問題,在網上找了很多解決方案都未能解決,原因可能我出現亂碼的問題不在傳輸過程,而且是在頁面上就已經出現亂碼了,現象很奇怪,我直接把引數賦值為中文後alert,發現是亂碼,所以不管我怎麼設定和在後台解碼都依然是亂碼。後來找到原因,共分兩點 第一 我的meta標籤設...