主题:【智慧一下】看看怎么做这道题阿 -- 坏坏哥
1) 4(A组) <-> 4(B组),如果平衡,goto 2;否则,假设A>B,goto 5;
2) 平衡,说明这8个球都是好的,那么从好的8个球里面挑选3个,从剩下的5个球里面挑选3个,放在天平两边称,如果不平衡,goto 3; 如果平衡,goto 4;
3) 现在我们有10个好球,剩下3个球,但是此时我们已经知道坏球是轻还是重,那么在剩下的3个球里面,随便挑2个出来放在天平两边,那么就可以知道那个是坏球,goto end;
4) 现在我们有11个好球,那么挑一个好球和剩下2个球里面任意一个称,如果平衡,剩下的最后一个就是坏球,如果不平衡,新拿上来的那个就是坏球。goto end;
5)此时我们有5个好球,8个不知道,还有2次称量机会。从A组里面拿一个出来,编号A1,从B组里面拿2个出来,编号B1,B2,把B1,B2加入到A组,和5个好球称,如果5好球==A组-A1+B1+B2,goto 7; 如果5好球>A组-A1+B1+B2,说明坏球轻,goto 6; 如果5好球<A组-A1+B1+B2,,说明坏球比好球重,goto 8;
6)因为A>B,坏球轻,因此坏球在新加入的B1,B2中,B1<->B2就OK了,goto end;
7)现在我们有10个好球。剩下3个坏球,其中A组1个,B组2个,把B组两个分别放在天平两端,如果平衡,剩下的A1就是坏球 goto end; 否则,设B3>B4,因为A>B且A组都是好球,则坏球轻,B4是坏球。goto end;
8)因为A>B,坏球重,因此坏球一定在A2,A3,A4这3个球里面,goto 3;
end:
say ‘yeah!’
以下该解无效!
第一步,13个球分三堆,6个球、1个球、6个球,编号为A、B、C然后把两堆6个球(A和C)放在天平左右,若相等,则那个单独球(B)是轻的。
若A和C不平衡,取轻的那堆,假设为A
第二步,将A堆分为两份,各3个球,A1和A2,放到天平上,取轻的那份,假设为A1
第三步,然后将A1里的三个球任取两个放到天平上,若重量相等则是第三个球为轻的,否则就很简单,看天平了。
哈哈
气死花和尚
唯一能做的就是给花了!哈哈!
差别在第2次,俺的5个和5个称,非吾有的是3个和3个称。原来这就是传说中的本题的非唯一解啊!
自我批评一下,俺的说明太程序化了,满脑子的 if {} else if{} else{},goto
和尚兄的解题思路我没怎么看明白,能不能推广开讲讲,比如3*2^n + 1个球,最多几次可以找到这个坏球?本题n=2,解是n+1=3,这个解能不能推广呢?