九个球,其中有一个不同(或轻或重),怎样分三次将其找出(用天平),大家注意,不知道是轻还是重。 (50分)

  • 主题发起人 主题发起人 狼牙
  • 开始时间 开始时间

狼牙

Unregistered / Unconfirmed
GUEST, unregistred user!
九个球,其中有一个不同(或轻或重),怎样分三次将其找出(用天平)
 
4,4,1
2,2
1,1
 
33分组。
找出不同与其它两组的一组(设其为A组),然后从A组取出一个,如果天平平衡,那么
就是取出的这个,如果不是就惨了,:),那再拿一次。嘻嘻。不过就4次了。
 
A B C D E F G H I
a =ABC?DEF
b =DEF?GHI
if ABC > DEF
and DEF = GHI
A?B A B C
if ABC < DEF
and DEF > GHI
D?E D E F
if ABC = DEF
and DEF > GHI
G?H G H I
 
没有这么简单阿,我们不能确定其是轻还是重,也就是说在不相同的状态下,有重,轻两种
选择,大家仔细想想。
 
我认为应该是12个球
 
var
i: integer;
balls: array[1..9] of integer;
weightballs: array[1..3] of float;
begin
for i := 1 to 3 do
weightballs := 0;
for i:=1 to 3 do
weightballs[1] := weightballs[1] + weight(ball);
for i:4 to 6 do
weightballs[2] := weightballs[2] + weight(ball);
for i:7 to 9 do
weightballs[3] := weightballs[3] + weight(ball);
if weightballs[1] = weightballs[2 ] then
if weight(balls[7]) = weight(balls[8]) then
Result := balls[9]
else
if weights(balls[7]) = weights(balls[9]) then
Result := balls[8]
else
Result := balls[7]
else
if weightballs[1] < weightballs[2] then
if weightballs[1] = weightballs[3] then
if weight(balls[4]) = weight(balls[5]) then
Result := balls[6]
else
if weight(balls[4]) > weight(balls[5]) then
Result := balls[4]
else
Result := balls[5]
else
if weight(balls[1]) = weight(balls[2]) then
Result := balls[3]
else
if weight(balls[1]) > weight(balls[2]) then
Result := balls[2]
else
Result := balls[1]
else
if weightballs[1] > weightballs[2] then
if weightballs[1] = weightballs[3] then
if weight(balls[4]) = weight(balls[5]) then
Result := balls[6]
else
if weight(balls[4]) > weight(balls[5]) then
Result := balls[5]
else
Result := balls[6]
else
if weight(balls[1]) = weight(balls[2]) then
Result := balls[3]
else
if weight(balls[1]) > weight(balls[2]) then
Result := balls[1]
else
Result := balls[2];

 
abc def ghi 分成三组
//称1 | //选1,2两组称
平 不平
| |
ghi有问题 abc def有问题
| |
//称2 g h称 ae bd称
| |
平 不平 不平(平衡方向不变) 不平(方向改变) 平
//称3 i g称 i g 称 a g称 e g称 cg 称
//最后一步除第2个ig称,其余g都是标准的
 
12个球我都可以做。
 
先分三份,A=123,B=456,C=789
A堆和B堆比較;
1.假如 A>B 或 A<B (大於代表重量大) 表示不正常的求在AB中,C是正常的球
由於這兩種情況類似,只取A>B的情況討論
那麼A和C比較,
(1)如果A=C,則壞球在B中而且知道壞球比正常輕,那麼第三次稱就是從B中3個
球中找出輕的一個,取4和5比較,if 4>5 then
5是壞球.if 4<5 then
4 是壞球,if 4=5
then
6是壞球
(2)如果A>C,則壞球在A中而且知道壞球比正常重,那麼第三次稱就是從A中3個
球中找出重的一個,取1和2比較,if 1>2 then
1是壞球.if 1<2 then
2 是壞球,if 1=2
then
3是壞球
(3)如果A<C,則壞球在A中而且知道壞球比正常輕,方法同(1)
2.假如 A=B 表示不正常的求在C中
那麼A和C比較,
(1)如果A<C,知道壞球比正常重,那麼第三次稱就是從C中3個
球中找出重的一個,方法同上
(2)如果A>C,知道壞球比正常輕,那麼第三次稱就是從C中3個
球中找出輕的一個,方法同上
 
奥林匹克竟赛中有类似的题,不过知道轻或重,按照楼上的朋友的解法,决非称3次,因此
此题可能无解。
 
这个问题太简单了!!!!!
一、首先分 3 堆(3 个一堆),随意取 2 堆用天平称,一样重则另一堆是与众不同的。
不一样则结合第二步可知那一堆是不同的。
二、判断轻重,把与众不同的一堆与另外两堆的任意一堆比较可知此球比其它的球是轻还是重。
三、把与众不同的一堆的三个任意取两个称就可得知那个球是与众不同的了。
 
看来远没有12个球的复杂,我又多考虑了
有几个答案都是正确的,我认为应该改成12个球,这个题才有点意思
 
如果是12个球,我认为此题无解。
 
这好像是一道面试题吧
 
可以这样:
1 。 九个球平分三份:A B C ,称两次即可判断出 A B C 其中有一份不正常,并且还可以判断出不正常的球是偏重还是偏轻。
2 。 在剩下的一份即3个球中找出偏重或偏轻的球,只需称一次。
 
12个球一定有解,而且我也解过
 
我在
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1212444
写过12球的解答。
 
4,4, 1
但不是三次可称,因为不知道轻重。
 
呵呵![red]海之钺[/red]兄说得更简洁明白。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
859
DelphiTeacher的专栏
D
后退
顶部