今天看到別人的面試算法題,求找出十包粉末中兩包藍色粉末的最短期

題目:有4個杯子,10包粉末,其中有2包溶於水變藍,其他無色,粉末溶於水2min才能顯現顏色。求找出兩包藍色粉末的最短期。假設水和粉末用不完。spa

方法一:方法

  第一趟:[12,34,56,78]  時間

    每一個杯子分別放兩包加水融化,剩下兩包無論。可能的狀況:枚舉

  (1)0個杯子變色,說明剩下兩包就是藍粉末顏色

  (2)1個杯子變色,則藍粉末在這個杯子兩包和未融化的兩包其中兩包,第二趟四包融化必定能夠找到ab

  (3)2個杯子變色,則在這兩個杯子的四包粉末中,第二趟可找到。

   時間均值:E = 2*1/45 + 4*44/45 = 178/45;

方法二:

  第一趟:[123;456;78;910]

 (1)1個杯子變藍,若是是3或4號杯子藍,則就是放入該杯子中的2種粉末,不然在變藍的杯子的3種粉末中,局部時間均值E1 = 2*2/45 + 4*6/45 = 26/45

 (2)2個杯子變藍,

    -若是是前兩個杯子變藍,第二趟放置[14;25;36;15],分析關係:杯子14有聯繫,24有聯繫。

         a. 杯1變色而杯4不變則

    -若是是前面兩個杯子有一個變藍,後兩個杯子有一個變藍,則5種粉末隨機取四种放在四個杯子中看現象。

    -若是後兩個杯子變藍,則4種粉末分別放在四個杯子中看現象就能夠。

時間均值:E = 2*2/45 + 4*43/45 = 176/45;

方法三:

第一趟:[1234; 2567; 3689; 47910] 

  每一個杯子只有一個獨立的,每杯都與另外三杯有一個共同粉末(並且一包粉最多隻能放在倆杯里),放置方法:1234放在杯子1,234分別放在杯234,567放在杯子2,67分別放杯子34...

  (1)不可能只有一個杯子藍,除了1 10,每包粉末都放在兩個杯子裏。

  (2)兩個杯子藍: 則只能是這兩個杯子共有而其餘兩個杯子無聯繫的。第一個藍杯中有兩包ab與兩個非藍杯有聯繫,另外一藍杯中有兩包cd與兩個非藍杯有關係。abcd排除後剩下3包粉末。例如杯子12_[1234;2567]藍,則多是12,15,25, 局部時間均值E1 = 4*18/45 = 72/45;

  (3)三個杯子藍,則能夠排除非藍杯的四種粉末剩下六種可能;至少有一包是這三個藍杯中兩個杯子的共同顏色,例如杯子123_[1234;2567;3689]藍,則有多是16,23,26,28,35,36,局部時間均值E2 = 4*24/45 = 96/45;

  (4)四個杯子藍,則藍色的粉末放在兩個杯子中,且兩包藍色粉末沒放在一塊兒;則只能是29,37,46三種組合之一, 局部時間均值E3 = 4*3/45 = 12/45.

   時間均值:E = 4;

方法四:枚舉

  即每種粉末都放入杯中溶解一次,直到找到兩包藍色粉末,

  (1)僅一趟就成功找到兩包藍色粉末, 局部時間均值E1 = 2*6/45 = 12/45;

      (2)兩趟就成功找到兩包藍色粉末, 局部時間均值E2 = 4*23/45 = 92/45;

  (3)三趟才成功找到兩包藍色粉末, 局部時間均值E3 = 6*16/45 = 96/45;

  時間均值:E = 200/45;

方法五:時間差

  經過間隔段時間投放不一樣的粉末,觀察水體變藍的時間來判斷和確認藍色粉末。

方法六:.......

相關文章
相關標籤/搜索