找回密码
 欢迎注册
楼主: medie2005

[讨论] 三星面试题

[复制链接]
发表于 2008-10-28 16:50:37 | 显示全部楼层
在来一个改善,对于具有公共前缀的二进制数据,余下部分如果交替添加01,最后位为0的,直接将0改为1就可以得到最优数据,而不需要拆分分析了.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-28 16:58:28 | 显示全部楼层
现在以616作为例子,其二进制表示为$(1001101000)_b$
二进制表示是10位数,由于它比$(1101010101)_b$小,我们需要继续分析
首先第一个候选数为9位数$(101010101)_b$,
然后我们看模板$(1000******)_b$,根据前面规则,结果最大的数据为$(1000101011)_b$
然后看模版$(10010*****)_b$,根据前面规则,结果最大的数据为$(1001010101)_b$
再看模版$(1001100***)_b$,同样去最大结果的为$(1001100101)_b$
而最后一个余下的是数据本身,如果奇数需要检查,这里是偶数,就不用检查了.
所以最终我们只需要检查集合
${(101010101)_b,(1000101011)_b,(1001010101)_b,(1001100101)_b}$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-29 08:00:41 | 显示全部楼层
前面还是有错误,对于所有偶数位二进制数,取到最大值的应该是最低两位是1,其它位01交替的数而不是最高两位是1的数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 22:05 , Processed in 0.045828 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表