基礎算法----誰毒死了酋長

出題

好久之前有一個大草原上最強的部落,其餘部落的首領每一年在酋長生日的一天會向他進貢。有一天進貢來了100人,每人送來了一個食物,酋長吃了其中一個食物後,口吐白沫暴斃而亡。算法

問題

國師但願經過最少的侍衛,最短的時間可以知道是哪個食物有毒。多線程

解析

每個算法題都不是憑空來的,好比這道題的解,能夠用在咱們多線程處理任務的時候,用最少的線程,最短期內得出結果。線程

方法

  1. 最簡單的是100種食物,100個侍衛,每人試一個,死亡的侍衛的食物就是有毒的食物。

可是這種基本不給分。二進制

  1. 採用分段法,將食物分層N段,M個侍衛進行實驗,不斷縮小分段數目,得出有毒的食物。

但這種方案在於分段數目越少,耗時越長。方法

  1. 採用二進制方式,好比100個食物,2^7 > 100,因而咱們能夠找7個侍衛,標號1-7,每種食物編號用二進制表示,不足7位的位置用0代替。

7個侍衛在食物二進制中1位置的侍衛吃一口,若是能定位到最終死掉侍衛的1的位置,就能夠定位食物的編號了。時間

好比死掉的侍衛是:5,6,7,二進制表示是:0000111,就表示食物編號爲7的食物有毒。tar

相關文章
相關標籤/搜索