runxinzhi.com
首页
百度搜索
小白鼠问题(海明码)
小白鼠问题(海明码)
同学问了一道智力题:30瓶水,其中有一瓶毒药,小白鼠喝了毒药之后一天会死,求只有一天时间,用最少的小白鼠找出毒药?
很简单的我就想到了海明码:
数位
数值
C1
00001
C2
00010
C4
00100
C8
01000
C16
10000
(C1=A1⊕A3⊕A5...⊕A29)
(C2=A2⊕A3⊕A5...⊕A30)
(C4=A4⊕A5⊕A5...⊕A30)
(C8=A8⊕A9⊕A10...⊕A30)
(C16=A16⊕A17⊕A518.⊕A30)
我们将A看作水,将水从1编号到30。C作为混合水,也就是将对应编号的水混合成5瓶水,对应C16C8C4C2C1。每瓶水用一只小白鼠实验(残忍),哪只死亡,哪只对应编号为1。例如,C8,C4死亡,那么对应二进制数为0110,也就是十进制12,代表12号水有毒。
如果推广到n瓶水呢?当:
$$2^x-1>=n$$
时,可以满足需求。即:
$$x>=log_2 (n+1)$$
所需小白鼠数量为大于等于以2为底n+1的对数的最小整数。
但是这个是使用一切情况吗?当n=1时,x=1。但是实际上,一杯水不需要验证,他就是有毒的。所以我发现当:
$$n=2^x$$
时是一种特殊情况。例如,当n=32时,我可以把标号为32的水拿出,剩余31瓶可以按照如上方法求出答案,只是多出一种00000的情况,说明前31瓶水都无毒。那么拿出的32号水肯定有毒!
所以正确的公式应为:
$$2^x>=n$$
即:
$$x>=log_2 n$$
所需小白鼠数量为大于等于以2为底n的对数的最小整数。这是推广到n时的正解。
相关阅读:
[IOS] iphone开发之UITableView之UITableViewCell [待续中。。。]
人生需有三心境,你有吗?
iPad iPhone程序增加启动画面
[转载]IOS学习之UIApplication深入学习
[IOS] iphone开发之[美化按钮]
程序中调用Safari
ios编程:iPhone Howto:给UIView拍照
IOSAPNS 消息推送实践
ios 设备方向判断
[IOS]iphone开发之横屏与竖屏在不同视图之间的切换
原文地址:https://www.cnblogs.com/kingbk/p/8675228.html
最新文章
[IOS] iphone之 UIFont 字体的艺术
[IOS]iphone之在视图上显示当前的时间,并且时间还在走。
下棋
[IOS] iphone之UITextField
[IOS] iphone开发官方网站的例子
UIImage 剪裁的方法
textfield
XML文件解析
男人经常强忍六件事很不利健康
[IOS]iphone开发之常用代码:不断更新
热门文章
IOS开发之手势——UIGestureRecognizer 共存
QQforMacQQforMac聊天记录/登录信息的保存路径 QQ for Mac使用问题
iphone开发资源汇总
根据Debug和Release状态的变化来屏蔽日志输出
人生100句经典妙语:生命终于叹息
[IOS] iphone开发之背景图片
iPhone,iPhone4,iPad程序启动画面的总结
ios学习UILabel学习随笔
math.h里的数学计算公式介绍
国家气象局提供的天气预报接口
Copyright © 2020-2023
润新知