演算法題 1000個蘋果和10個箱子

2021-10-11 04:25:54 字數 955 閱讀 4032

最近去面試筆試遇到一道演算法題,題目是放在最後面的加分題,大概內容如下:

現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量(1-1000)的蘋果,都能一次給出?

當時我基本沒思路,也沒多少時間,直接跳過了;

後來查了一下,用到二進位制的思想;

1000個蘋果,最接近1024,轉化為2進製,需要占用10個bit,則從右往左數,第乙個bit位表示1個蘋果,第二個

bit位表示2個蘋果,第三個bit位表示4個蘋果,,,第10個bit位表示剩下的489個蘋果。分別把這些通過放入

相同編號的箱子裡。當需要某一數量的蘋果時,檢視這些數量的哪些bit位為1,為1則表示這個bit位代表有蘋果,

取出對應編號的箱子即可。

框編號1098

7654

321蘋果數目

489256

12864

321684

21還有其他博友那淘來的毒藥問題,異曲同工:

有8瓶液體,其中一瓶是毒藥,毒性可使小白鼠飲用後在20小時內陣亡,需要幾隻小白鼠才能在20小時內判斷哪一瓶是毒藥?

給8瓶毒藥編碼:

第一瓶:000

第二瓶:001

第三瓶:010

第四瓶:011

第五瓶:100

第六平:101

第七平:110

第八平:111

只需3只小老鼠

第一只老鼠喝最後bit位為1的,即第2,4,6,8瓶

第二隻老鼠喝中間bit位為1的,即第3,4,7,8瓶

第三隻老鼠喝第一bit位為1的,即第5,6,7,8瓶

如果20小時後,沒有老鼠死亡,則第一瓶有毒,否則:

假設第二隻和第三隻老鼠死亡,把對應位上bit設為1,即110,所以第7瓶有毒。

參考:

1000個蘋果分10個裝箱

1000個蘋果放入10個箱子。客戶如果要獲得1 1000個蘋果中的任意個數,都可以整箱搬,而不用拆開箱子。問是否有這樣的裝箱方法?二進位制數組合 110 1001000 可以表示任何0x01 0xff之間的數字,所以按照這樣的思想,110 1001000 10000 100000 1000000 1...

遞迴演算法《M個蘋果放入N個盤子》

題目 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入每個用例包含二個整數m和n。0 m 10,1 n 10。樣例輸入 7 3樣例輸出 放蘋果分為兩種情況,一種是有盤子為空,一種是每個盤子上都有蘋果。令 m,n ...

乙個演算法題

題目描述 某省會城市街道縱橫交錯,為了監控路燈的執行狀況,每條街道使用乙個數字字串標識該街道上所有路燈的執行狀況。假設路燈只有如下 3種狀態 分別用數字 0,1,2標識,一盞路燈只對應其中一種狀態 0 標識路燈熄滅 1 標識路燈開啟 2 標識路燈故障 請根據輸入的字串,找出該街道上連續的處於相同狀態...