[轉] 毒酒問題---1000桶酒,其中1桶有毒。而一旦吃了,毒性會在1周後發做。問最少須要多少隻老鼠可在一週內找出毒酒

http://blog.csdn.net/wcyoot/article/details/6435906編碼

本題考查的是二進制編碼問題。.net

 

如對1000桶按1~1000編碼,須要10位二進制數。blog

 

所以只須要取10只老鼠,每隻老鼠只喝其對應位數爲1的編號的酒。get

即10只老鼠按如下編碼:監控

 

第一隻 00000 00001二進制

第二隻 00000 00010tar

第三隻 00000 00100

第四隻 00000 01000

...

第十隻 10000 00000

 

每隻老鼠只喝其編碼與酒編碼作位與運算非0的酒。若是毒酒的編碼在某一位爲1,則監控該位的老鼠必喝,結果爲1.

 

即把10只老鼠的結果,按位填入一個10位二進制數中,其結果即爲毒酒編號。

 

例如:編號爲10001 00011的酒是毒酒。則對應的只有第一隻,第二隻,第六隻,第十隻死亡。其對應位數置1,即爲10001 00011

相關文章
相關標籤/搜索