問題描述:有101根電線 每根的一頭在樓底 另一端在樓頂 有乙個燈泡 乙個電池 無數根很短的電線 怎麼樣在樓上一次在樓下去一次將電線的對應關係弄清楚。
在樓頂的階段:
首先任意選出7根線(例如最左邊的),可命名為a0~a6,那麼還剩下94根線,編號為0~93,對於i線,可以寫出i的二進位制形式,例如11號的線可以寫為0001011,那麼11號線的樓頂這端就可以和a0,a1,a3用短電線相連,即二進位制形式位為1則與對應的a中的線相連。
然後對a0~a6這7跟線按照如下關係連線起來:
比如橫座標為a2,縱座標a1的格仔為1表示把a2和a1連線起來,為什麼要這樣連線,很快就知道了。
現在我們可以帶著電池和燈泡下樓了。
在樓下的階段:
我們給每根線編號,比如b0~b100,那麼現在開始做一件體力活,依次將兩根電線的一端用燈泡和電池連線起來,如果燈泡亮了,那麼就給兩個電線(比如b3和b21)都加上一分,當你把所有電線的組合都做完之後,電線的分大概是這樣子,有94根電線的分不超過7,而有7根電線的分則大於7,比如,
7,6,0,2,…,3,5,1,5 和52, 51, 50, 48, 49, 34, 31
顯然出眾的7根線就是a0~a6,現在問題就是如何區分a0~a6,很顯然,我們可以通過得分來區分a0~a6。
定義a0的基本得分是0~93中的數第0位不為1的個數,a1、a2餘次類推,然而,我們會發現,基本得分有相同的情況,事實上,a0~a6的基本得分依次為: 47, 46, 46, 46, 46, 32, 30,也就是說,僅依靠基本得分,分不清。
這時我們在樓上階段的對這7根線之間作的連線的作用就出來了,在樓頂的這些工作使得它們有了額外的得分並且兩兩得分不一樣,事實上,得分52的線,就是a0,51的,是a1…
於是a0~a6就區分開了。
最後一步就是對剩下的94根線中的每一根通過已經確定的a0~a6來確定他的編號的二進位制形式,比如b23只有通過電池燈泡連線a0,a3,a6時燈泡會亮,那麼樓底的b23就是樓頂的64+8+1=73號線。
不知道有沒有更好的辦法,總覺得工作量太大了。
乙個面試題
題目是 假設乙個 搜尋引擎收錄了2 24首歌曲,並記錄了可收聽這些歌曲的2 30條url,但每首歌的url不超過2 10個。系統會定期檢查這些url,如果乙個url不可用則不出現在搜尋結果中。現在歌曲名和url分別通過整型的song id和url id唯一確定。對該系統有如下需求 1 通過song ...
乙個面試題
在不超過最右邊的數量的情況下任意組合,要求加起來不超過20280這個數字,但達成最接近的情況,現有一種方法為 1290 4 2990 5,差170,有沒有更接近20280的答案 資料如下 4900 13790 22990 5 意思是不能超過5次,但可以使用1次,2次,3次,4次,5次。2390 31...
乙個面試題
res fromkeys name password age print res print res print id res name id res password res name 666 print res 輸出 57496360 57496360 fromkeys 建立字典時,字典中所有的...