你是被編碼的羔羊嗎

2021-09-08 17:20:17 字數 788 閱讀 5858

題目是這樣的,乙個國王有100桶酒,在乙個漆黑的夜晚,有乙個小偷,悄悄的往其中的一桶酒中投放了毒藥,毒藥是慢性藥,大約半個小時會發作,令人死亡。國王得知了這個資訊,決定找一些犯人,來嘗試喝酒,從而確定究竟哪桶就被投毒了。問題是,如何使用最少的犯人在最短的時間裡,確定被投毒的酒。

1,最容易想到的解決方案是,找99個煩人,每人喝每個桶中的一口,那麼半個小時之後,就可以分辨出哪桶酒被投毒了。

然而,用99個人太多了,肯定有優化的空間。

2,第二種方案是,將100桶酒拜訪成10 x 10的矩陣,找20個人,其中10個人,按行喝酒,把各行的10桶酒都喝一口。另外10個人,按列喝酒,把各列的10桶酒都喝一口,那麼,半小時之後,會有2個人死亡,這兩個人交叉的地方的那桶酒,被投毒了。

3,第三種方案是,擴充套件到三位空間,因為5 * 5 * 4 = 100,那麼找5+5+4=14個人,不同人分別喝一面的桶中的酒,那麼半小時後,會有3個人死亡,交叉的地方的那桶酒,是被投毒的。

那麼,還能再改進嗎?

採用二進位制編碼的方式可以繼續優化。

因為2的7次方為128,大於100了,所以,我們找7個人。對這100桶酒分別編號1~100,用二進位制表示各個編號。一桶酒的編號的二進位制數值,可以在7位以內進行表示,哪位為1,那麼該位置的人就要喝這桶酒。把100桶酒都這麼處理,那麼半小時候,會有若干個人死亡,那麼,死亡的人為1,未死亡的人為0,他們組成的數字對應的編號,即為被投毒的酒。這個方案,只需要7個人。

那麼既然編碼這麼好用,那為什麼我們不用三進製,或者乾脆用十進位制呢?那樣使用的人數會更少。

這是因為,每桶酒只有有毒和沒毒2種狀態,所以得用二進位制。

你是時間的俘虜嗎

資訊時代賦予我們許多新的 工作工具,尤其是手機和電腦,由此也出了乙個新詞兒 knowledge worker 直譯為 知識工作者 知識工作者 跟扛麻袋的工人本質上沒有太大差別,只不過使用的工具和工作方式不一樣而已。工人的麻袋休息時就可以從肩膀上卸下,但現如今的很多知識工作者卻時刻被手機簡訊 和電子郵...

你是正常的傻瓜嗎?

你是正常的傻瓜嗎?先出乙個題目 如果某日,你下班後照常等公車,但半個多小時過去了它還沒來,很顯然路上出了什麼事情。這個時候,你的同事小白也過來等車。他看到你的狀況就提議一起打車回家。你覺得這未嘗不是個好主意,但是細說下來才發現自己的方向和小白恰好相反,一起是不可能了。小白猶豫一下,然後決定自己打車走...

UE UI UCD UED?你知道你是幹啥的嗎

ui user inte ce 即使用者介面,也稱人機介面。是指使用者和某些系統進行互動方法的集合,這些系統不單單指電腦程式,還包括某種特定的機器,裝置,複雜的工具等。ue或ux就是使用者體驗 user experience 指的是使用者使用乙個產品 服務 時的所有體驗與心情感受,包含對於設計風格的...