您的位置:首页 > 职场人生

一道微软面试题

2011-09-27 21:12 267 查看
题目:给你10只狗,有1000个药品,要么都没毒要么只有一瓶是有毒的,请你在一天内检测出来。已知有毒的药品会散发出毒气,狗闻了会中毒毙命,并且毒气发作的时间是19~23小时。

这道题,要用二进制来解决,3的二进制表示11,8的二进制表示1000.

下面是解决方案:

给10只狗编号1,2,3,4,5,6,7,8,9,10

用10个二进制位排列,因为2的10次方等于1024,大于1000,所以一定能找到。

用0表示狗没闻,1表示狗闻了。

开始排列:

0000000001 表示对于第1个药品,编号为1的闻了,其余没闻

0000000010 表示对于第2个药品,编号为2的闻了,其余没闻

0000000011 表示对于第3个药品,编号为1、2的闻了,其余没闻

0000000100 表示对于第4个药品,编号为3的闻了,其余没闻

0000000101 表示对于第5个药品,编号为1、3的闻了,其余没闻

... ...

... ...

1111100111 表示对于第999个药品,编号为1、2、3、6、7、8、9、10的闻了,其余没闻

1111101000 表示对于第1000个药品,编号为4、6、7、8、9、10的闻了,其余没闻

最后根据哪些编号的狗死了,就可以知道第几个药品有毒了。

比如说只有编号为1和编号为3的狗死翘翘了,那么肯定是第5个药品有毒了。

如果10只狗狗都平安无事,那这堆药品都没有毒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: