[ 本帖最后由 zhangting85 于 2009-9-15 14:52 编辑 ]作者: zjxyy88107 时间: 2009-9-17 16:42 标题: 回复 6# 的帖子 大哥,你切1/4??你这么准就能切好,那你直接等蜡烛烧到某一时刻,你说现在刚好45分钟得了!作者: zhangting85 时间: 2009-10-4 22:34 标题: 回复 7# 的帖子 当然可以,拿一个秒表计时45分钟就可以了,其实你这个问题问到点子上了,题目上根本没有要求不能使用工具。作者: 何萧 时间: 2009-10-8 10:45 标题: 回复 1# 的帖子 第1题有点意思,我大致看了一下好像没有给出正确答案的
最好的解决方法,是使用三进制。(其实也不知道这能不能用“三进制”来概括,只是姑且这么说说)
在使用三进制之前,先看看最容易用到的方法,是逻辑判断法。其中一个答案是这样的:
设12个为: abcdefghijkl 结果为 X , 正品为 x
1) abcd -- efgh
if abcd = efgh then X in ijkl
2) abcd -- eijk
if abcd = eijk then X = l
else if abcd < eijk then x < X & X in ijk
else x > X & X in ijk
3) 略。
endif
else abcd > efgh (反之也同理) ijkl = x
2) ijka -- bcde
if ijka < bcde then X in bcd & X > x
3)...
if ijka > bcde then X in ae ( a>e)
3) a -- x
if a = x then X = b ( x then X = a
if ijka = bcde then
X in fgh & X < x
endif
这只是一个例子,并没有从原理上解决问题。当小球数量发生变化的时候,就必须重新想一个方案,使用不同的判断流程。
目前大家比较认可的数学解法,是使用3进制。
先将12个小球进行编码,规则是:使用0,1,2三个数字,编码成3位的号码,一共有27个。
去掉其中3个3位一样的编码000、111、222,还剩下24个。
这里,先提出【对称】这个定义,所谓对称,是指:以某个数字为对称轴,保持不变,另外两个数字互相换成对方的情况。如001,按0对称是002,按1对称是221,按2对称是110。
把这24个编码按开头的数字分成3组,称为0组、1组、2组。
从0组任取4个编码,每取出一个同时删除3个组中的对称编码,取完4个之后,1组、2组也只剩下了4个编码,一共剩下12个编码。
这样操作之后,剩下的12个编码就作为12个小球的编码,其中一个例子如下:
001、010、011、012、200、202、201、220、112、120、121、122
下面开始使用天平。
将第一位为1的4个小球放在天平左边,第一位位2的4个小球放在天平右边,并记录结果,平衡记为0,左边轻记为1,右边轻记为2。
将第二位为1的4个小球放在天平左边,第二位为2的4个小球放在天平右边,并记录结果。
将第三位为1的4个小球放在天平左边,第三位为2的4个小球放在天平右边,并记录结果。
三次的结果记录下来也形成了一个编码,如010,002等。
这个结果的编码对应的小球就是有差异的小球了。如果编码能直接找到,表示这个小球比正常的轻,否则使用其相对0的对称编码一定可以找到,这时候找到的小球也是有差异的小球,但是表示这个小球比正常的重。
为什么会出现按0对称编码才能找到小球的情况呢?因为,我们记录规则是【左边轻为1,右边轻为2】,同时,称量的规则是【左边放1,右边放2】。因此在差异球比较轻的情况下,结果编码会与放置编码相同;差异球比较重的情况下,结果编码会与放置编码相反。
就是这样了。