当前位置: 代码迷 >> Java面试 >> java工程师2道智力题没解答出,希望得到哪位仁兄解决下不甚感谢解决思路
  详细解决方案

java工程师2道智力题没解答出,希望得到哪位仁兄解决下不甚感谢解决思路

热度:92   发布时间:2016-04-17 20:10:01.0
java工程师2道智力题没解答出,希望得到哪位仁兄解决下不甚感谢
1.12个乒乓球有一个乒乓球的重量异常(不知道是轻或重)给一个不带砝码的天平,只准称3次找出这个异常的乒乓球?

2.有8个球,有一个球是重100g,有一个球轻100g,期于的球都是500g,给一个没有刻度不带砝码的天平,只可以称4次一定要找出这2个球,怎么称?

------解决方案--------------------
第一个问题:想的和bao110908的方法一样。
第二个问题比较难了。。。不知能表达清楚不。
第1次:分两组,每边4个。分两种情况:
1.1平衡(说明轻球和重球在同一组,也表明另一组4个是标准球)
 第2次:从原组中每组拿3个。
第3次:从原组中每组拿2个。
第4次:从原组中每组拿1个。
判断方法为:本次若平衡:说明轻球和重球还在同一组,继续找。
本次若不平衡:找到轻球或重球(上次剩下的1个就是轻球或重球)。
1.2不平衡(说明轻球和重球在不同组,为球编号,为方便论述假设为A重,B轻,那么编号为A1、A2、A3、A4;B1、B2、B3、B4)
 第2次:A1、A2、B1、B2一组;A3、A4、B3、B4一组
 2.1平衡:A1、A2、B1、B2中既有重球也有轻球。
第3次:称A1、A2。找重球。
第4次:称B1、B2。找轻球。
2.2不平衡两种情况:
2.2.1:A1、A2、B1、B2重,那么重球在A1、A2中,轻球在B3、B4;
第3次:称A1、A2。找重球。
第4次:称B3、B4。找轻球。
2.2.2:A1、A2、B1、B2轻,那么重球在A3、A4中,轻球在B1、B2;
第3次:称A3、A4。找重球。
第4次:称B1、B2。找轻球。
不知道对不对,都写蒙了,写的时间比想的时间都长。这是哪公司的智力题啊,我还在找工作呢,不知道我能去不。现在毕业找工作ing.....
------解决方案--------------------
能做第二题
分三组 A1,A2,A3 B1,B2,B3 C1,C2
if(A > B)
//if 400 in B 则 600 in C || 600 in A, 400 in B or C
if(C1> C2) //C1 最小500
if(C1> A1) //C1 同A队中任意一个比较C1==600,C2==400
elseif(C1==A1) //C2==400;
if(A2> A3) // A2==600;
else //A3 ==600;
elseif(C1 <A1) //A1==600,C1==400;
elseif(C1==C2)
if(A1> A2) //A1==600;
elseif(A1==A2) //A3==600;
elseif(A1 <A2) //A2==600;
if(B1> B2) //B2==400;
elseif(B1==B2) //B3==400;
elseif(B1 <B2) //B1==400;
elseif(C1 <C2)
相似并列中的if
elseif(A < B)
相似并列中的if

elseif(A == B) //两个球在同一组
if(A1> A2)
if(A1> A3) // 三个球内比 一定可以得到 大和小
elseif(A1 <A3)
elseif(A1==A2)
if(B1> B2)
elseif(B1==B2)
if(C1> C2)
//C1==600;C2==400;
elseif(C1 <C2)
//C1==400;C2==600;
elseif(C1==C2)
//error
elseif(B1 <B2)
elseif(A1 <A2)
  相关解决方案