IQ题:
有 12 颗玻璃球大小一样, 不知道哪一颗重了, 还是轻了. 请用天平秤秤3次, 把其中的一颗重量不均匀的玻璃球取出来!
高手的给的答案
先把小球平均分成三组每组4个。
(1)第一次把其中两组放到天平两边,若平衡,这种情况较简单,这里不说了,
(2)若不平衡,假定轻的是左边的四个小球,编号为1234号;重的是右边,编号为5678,第三组(没放在天平的)编号为9到12。
(3)第二次把1、2、5、9放在天平左边,3、4、6、10放右边若平衡,则不同的小球是7或8,而且比一般球重,第三次容易区分。
(4)若天平还是左轻右重, 则不同的小球是1、2、6之一,第三次也容易区分,只需把1、2秤出轻的便是,否则是6,若天平变为左重右轻,则不同的小球为3、4、5之一,方法与上同。
高手的给的答案
先把小球平均分成三组每组4个。
(1)第一次把其中两组放到天平两边,若平衡,这种情况较简单,这里不说了,
(2)若不平衡,假定轻的是左边的四个小球,编号为1234号;重的是右边,编号为5678,第三组(没放在天平的)编号为9到12。
(3)第二次把1、2、5、9放在天平左边,3、4、6、10放右边若平衡,则不同的小球是7或8,而且比一般球重,第三次容易区分。
(4)若天平还是左轻右重, 则不同的小球是1、2、6之一,第三次也容易区分,只需把1、2秤出轻的便是,否则是6,若天平变为左重右轻,则不同的小球为3、4、5之一,方法与上同。
正解。不过此题答案不唯一。大家可以继续想。
核心思路是,每次称重,不管天平平衡与否,都能尽可能多的排除掉一些可能。
和海盗问题一样,这也是MS前几年的面试题之一
太容易了 分成三组!
A{a0,a1,a2,a3}
B{b0,b1,b2,b3}
C{c0,c1,c2,c3}
if(A==B)
{
令D' = {c0,c1,c2}
if ( D' = = {a0,a1,a2} ) {
c3 is bad ball;
} else if( D' > {a0,a1,a2} ){
令D" = {c0 ,a0};
令D"" = {c1,a1};
if( D" = = D"" ){
c2 is bad ball;
}else{
if( D" > D"" )
c0 is bad ball;
else
c1 is bad ball;
}
}else if( D' < {a0,a1,a2}) {
令D" = {c0 ,a0};
令D"" = {c1,a1};
if( D" = = D"" ){
c2 is bad ball;
}else{
if( D" > D"" )
c1 is bad ball;
else
c0 is bad ball;
}
}
if(A > B){
令 D' = {a0,a1,b2,c3}; ‘选球过程中还有a3,b3,b1没有选
令 D" = {b0,c1,a2,c0};
if( D' == D" ){
取{a3,b3}和{c0,c1}比较
if( > )
a3 is bad ball
if( < )
b3 is bad ball
if( = )
b1 is bad ball
}
if(D > D" ){ ‘假设坏球大,那么就在a0,a1当中;假设坏球小,那么就在b0中
坏球在a0,b0,a1之间
取{a0,b0}和{c0,c1}比较
... if( > )
a0 is bad ball
if( < )
b0 is bad ball
if( = )
a1 is bad ball
}
if(D'< D" ){
取a2,b2任一,和标准c0比较 ‘假设坏球大,那么就在a2当中;假设坏球小,那么就在b2中
if a2>c0
a2 is bad ball
else
b2 is bad ball
}
}
if(A < B){
令 D' = {a0,a1,b2,c3}; ‘选球过程中还有a3,b3,b1没有选
令 D" = {b0,c1,a2,c0};
if( D' == D" ){
取{a3,b3}和{c0,c1}比较
if( > )
b3 is bad ball
if( < )
a3 is bad ball
if( = )
b1 is bad ball
}
if(D < D" ){ ‘假设坏球小,那么就在a0,a1当中;假设坏球大,那么就在b0中
坏球在a0,b0,a1之间
取{a0,b0}和{c0,c1}比较
... if( > )
b0 is bad ball
if( < )
a0 is bad ball
if( = )
a1 is bad ball
}
if(D'> D" ){
取a2,b2任一,和标准c0比较 ‘假设坏球大,那么就在b2当中;假设坏球小,那么就在a2中
if a2>c0
b2 is bad ball
else
a2 is bad ball
}
}
这题我两年关就做过了.我来回答.开始同ziqing_1_2_3一样
先把小球平均分成三组每组4个。
分别是 组一, A.B.C.D
组二,
组三, a.b.c.d
先用第一组和第二组称.平衡就不用说了(重或轻的球在组三中).
先假设.组一重.组二轻.
第一组和第二组不平衡.说明组一和组二中有一个球或重或轻.
再用A.B.1 和C.D.2去称(这后面就要用逻辑去想了) 平衡那是在3.4球不同.
不平衡.
1.平衡有没有出现交换.那么 A.B 中有一球重.或 2球 轻
2.平衡发生交换那么 C.D. 中有一球重.或 1 轻
再用A.2或C.1和a.b称.就可以推理出不同重量的球
3个以下 三的一次方 1算出 1V1
9个以下 三的二次方 2算出 3V3 1v1
27个以下 三的三次方 3算出 9V9 3V3 1v1
81个以下 三的四次方 4算出 27v27 9V9 3V3 1v1
.....
以下类推..
12个的合理算法,分为9,3,0
在9中的话,2次可算出 (9再分3,3,3 )
在3中的话,1次可算出
12个最多三次可算出结果
以上所有对半分的答案肯定不是最合理的,些题考的只是一个算法,12只是一个特例,有没有考虑过:27个,24个,81个....20003333个的情况呢...
3的次方是此题的规律...

