今天学习了二进制的相关知识。
经典题目:用十条狗找出1000瓶药水中有毒的那一瓶.
思路:10只狗,喝了药水之后第二天只有存在和挂掉两种情况,我们用计算机二进制里面的0和1来进行模拟,1代表喝、0代表不喝,对于每一瓶药, 这10只狗的喝的pattern如下。
【 二进制映射喝法:0000000001对应十进制编号第1瓶药水 】
【 二进制映射喝法:0000000010对应十进制编号第2瓶药水 】
【 二进制映射喝法:0000000011对应十进制编号第3瓶药水 】
【 二进制映射喝法:0000000100对应十进制编号第4瓶药水 】
【 二进制映射喝法:0000000101对应十进制编号第5瓶药水 】
【 二进制映射喝法:0000000110对应十进制编号第6瓶药水 】
【 二进制映射喝法:0000000111对应十进制编号第7瓶药水 】
【 二进制映射喝法:0000001000对应十进制编号第8瓶药水 】
【 二进制映射喝法:0000001001对应十进制编号第9瓶药水 】
【 二进制映射喝法:0000001010对应十进制编号第10瓶药水 】
【 二进制映射喝法:0000001011对应十进制编号第11瓶药水 】
【 二进制映射喝法:0000001100对应十进制编号第12瓶药水 】
【 二进制映射喝法:0000001101对应十进制编号第13瓶药水 】
【 二进制映射喝法:0000001110对应十进制编号第14瓶药水 】
【 二进制映射喝法:0000001111对应十进制编号第15瓶药水 】
【 二进制映射喝法:0000010000对应十进制编号第16瓶药水 】
思路:
每个二进制都是独一无二的,10条狗可以找出2的10次方瓶药水,那就是1024,所以10条狗找1000品药水绰绰有余;
给每一瓶药水都编号(1.2.3......100).然后转换成二进制的表示方法(00001.0010等等);
然后按照二进制来给狗喂药,遇到0就不给这条狗喝药,遇到1就给对应的狗喝药;
第二天毒药发作,没死的狗就是0,死了的狗就是1,这样按照顺利数下来,然后转为十进制就知道是哪一瓶药水了。
本文介绍了一种利用二进制原理解决复杂问题的方法:如何通过10只狗找出1000瓶药水中唯一的一瓶有毒药水。通过给每瓶药水编号并转换为二进制形式,再根据二进制位上的0或1决定是否让对应的狗饮用该瓶药水。最终,根据狗的生死状况即可确定有毒药水的具体编号。
770

被折叠的 条评论
为什么被折叠?



