智力题目
本帖最后由 haijie1223 于 2012-10-28 18:41 编辑(问题)有十二个乒乓球形状、大小相同,其中只有一个重量与其它十一个不同,现在要求用一部没有砝码的天秤称三次,将那个重量异常的球找出来,并且知道它比其它十一个球较重还是较轻。
答案:
**** Hidden Message ***** 貌似没有回复也看到了答案,奇怪 其实,,,其实小弟不需要三次 也不需要天秤称的办法是:
捧手上就知道了, 回复 3# 魔导
捧在手里掂吧掂吧... 楼上的都是高人呐 像我的话 捧两个乒乓球和捧一个重量上对我来说肯定没感觉{:face (411):} 很经典的题目~~ 研究研究...... 本帖最后由 3mile 于 2012-11-5 19:20 编辑
呵呵,很久以前写过一个12球的代码.
#include <array.au3>
local $a=
if Execute(_ArrayToString($a,"+",0,3))>Execute(_ArrayToString($a,"+",4,7)) Then;说明9,10,11,12标准
msgbox(4096,0,"第一次左重")
if $a+$a+$a+$a>$a+$a+$a+$a Then
msgbox(4096,0,"第二次左重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为1重")
Elseif$a<$a Then
msgbox(4096,0,"第三次称重,结果为2重")
Else
msgbox(4096,0,"第三次称重,结果为7轻")
EndIf
ElseIf $a+$a+$a+$a<$a+$a+$a+$a Then
msgbox(4096,0,"第二次右重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为6轻")
Elseif$a<$a Then
msgbox(4096,0,"第三次称重,结果为5轻")
Else
msgbox(4096,0,"第三次称重,结果为3重")
EndIf
Else
msgbox(4096,0,"第二次同重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为4重")
Else
msgbox(4096,0,"第三次称重,结果为8轻")
EndIf
EndIf
ElseIf Execute(_ArrayToString($a,"+",0,3))<Execute(_ArrayToString($a,"+",4,7)) Then
msgbox(4096,0,"第一次右重")
if $a+$a+$a+$a>$a+$a+$a+$a Then
msgbox(4096,0,"第二次左重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为5重")
Elseif$a<$a Then
msgbox(4096,0,"第三次称重,结果为6重")
Else
msgbox(4096,0,"第三次称重,结果为3轻")
EndIf
ElseIf $a+$a+$a+$a<$a+$a+$a+$a Then
msgbox(4096,0,"第二次右重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为2轻")
Elseif$a<$a Then
msgbox(4096,0,"第三次称重,结果为1轻")
Else
msgbox(4096,0,"第三次称重,结果为7重")
EndIf
Else
msgbox(4096,0,"第二次相等")
if $a<$a Then
msgbox(4096,0,"第三次称重,结果为4轻")
Else
msgbox(4096,0,"第三次称重,结果为8重")
EndIf
EndIf
Else
msgbox(4096,0,"第一次相等")
if Execute(_ArrayToString($a,"+",8,10))>Execute(_ArrayToString($a,"+",0,2)) Then
msgbox(4096,0,"第二次右重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为9重")
ElseIf $a<$a Then
msgbox(4096,0,"第三次称重,结果为10重")
Else
msgbox(4096,0,"第三次称重,结果为11重")
EndIf
ElseIf Execute(_ArrayToString($a,"+",8,10))<Execute(_ArrayToString($a,"+",0,2)) Then
msgbox(4096,0,"第二次左重")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为10轻")
ElseIf $a<$a Then
msgbox(4096,0,"第三次称重,结果为9轻")
Else
msgbox(4096,0,"第三次称重,结果为11轻")
EndIf
Else
msgbox(4096,0,"第二次相等")
if $a>$a Then
msgbox(4096,0,"第三次称重,结果为12轻")
ElseIf $a<$a Then
msgbox(4096,0,"第三次称重,结果为12重")
Else
msgbox(262144+64,0,"你不是在玩我吧,12个球一样重噢!")
EndIf
EndIf
EndIf 将12个分成3份,每份4个,分别为A份,B份,C份,首先任意取出两份进行比较一次,例如取出了A 和B 进行比较,假如A = B 则得知 那个异常球在C 里,然后将A或B 和 C 平均分成2份a1,a2,c1,c2
,分好后假如拿a1和c1进行比较,若相等则异常球在c2,反之在c1,那么再假如异常球在c1,再将c1和c2分两份为c11,c12,c21,c22,去c2里的其中一份和c1的其中一份进行比较,那么结果便得知。 不知道怎样{:face (427):} 呵呵,知道怎么称,就是不会写代码,囧! 回复下 看看数学题
页:
[1]