试用判定树解决:从12球中有一异常球(重或轻),选出球的最佳方法是什么。(选取工具:天平) (100分)

  • 主题发起人 主题发起人 lcdjj
  • 开始时间 开始时间
L

lcdjj

Unregistered / Unconfirmed
GUEST, unregistred user!
1、试用判定树解决:从12球中有一异常球(重或轻),选出球的最佳方法是什么。(选取工具:天平)
2试叙述HASH算法中解决HASH冲突的方法,并比较其优缺点。
帮我兄弟问的 任选一题解答即可 给上司考MPA用的 急需答案
 
二分查找判定树
首先分为A,B两组
用天平称
如果A较重
分成A.1和A.2两堆,
用天平称,如果A.1重
将A.1分成两堆 A.1.a ,A.1.b,同时多出一个,没堆只有一个A.1.c
用天平称,如果A.1.a重
则得出结果:A.1.a为目的球,此球偏重
或者相等
则得出结果:A.1.c为目的球,此球偏重
或者A.1和A.2相等
则目标球在B组中,将B组分成B.1和B.2,用天平称
如果B.1重
将B.1分成B.1.a和B.1.b,,多出一个,为B.1.c用天平称,
如果B.1.a较重
得出结果,B.1.a为目的球,此球较重
。。。。。。。。。。。。。。。。。。。。。。。。。。。
这里不写了,画一棵二叉树,就可以了

 
二叉树的算法吧
 
good!
我有一同事,考验面试时,导师问他这个问题,当时他没答出来。回来后告诉我们,有一兄弟给一答案:你猜。。。?














导师说他,不分轻重!(怀疑当时他老先生大吹一气,把老头气个半死!)












 
lich 我就是不会划判定树才找人帮忙
 
这种方法不是最优的
我记得3次就可以用天平分出结果
 
三次称出的做法。
分三份,每份三个球
放两份上去
1、有一份重,把轻的拿下去,换另一份上来,还是有一份重的话,那说明有问题的球较重,从较重的那一份中份两个球来称,重的那个就是异常,如果两个一样,则没称那个异常。
2、若在第二次称的时候,两份一样重,则说明有问题的球较轻,这时就把拿下的轻的那份球按上述方法分出来。
 
3次可以出来,不过有谁第一次就10分钟内搞定,那是
天才!!!!!!!!!!!!!!!!!!!!!!
20分钟内搞定,那是
高手!!!!!!!!!!!!!!!!!!!!!!
30分钟内搞定,那是
聪明!!!!!!!!!!!!!!!!!!!!!!

 
对于本问题,最快、最省心的方法是:
什么招都别想——12个球挨个称过来,立马就能判断出哪个不一样——耗时肯定小于2
分钟。
——天才也不过如此嘛:PPPPPP
 
这题N年前就有人问过,只要倒着推很快就能推出来。
 
着问题我做过!
3次能称出!
分3堆!
1:任2堆 辩坏球在哪一堆!(记好哪一边轻或重若平老是在第3堆里)
if 在未称那一堆 then
好称(3次)
else
2:第一次的两堆中拿一堆的两个放回 并交换剩下的一个和另一堆的任意一个并在
第3堆中拿任两个加入去掉两个的一堆补足3个再称(这里有一个判断)
综合1,2可得出有一坏球(不知轻重) 或坏球在那两个里面(知轻重)
3:若2的前者任拿一好球与坏球称可知轻重,后者在两个中任拿一个和好球称可得
坏球!
 
我用老5分钟!
 
这个问题不知道问过多少次了。
还拿这种老掉牙的问题出来?晕倒~~
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1804095
看以前答的贴字吧。
 
三分堆 个数分别为 3,4,5
那么 第一次就知道 那个 次品球 在那一对里面。
1: 如果在3个 的 堆里,那么 分成 1, 2 两个堆再称
2: 如果在 4个的堆里面,那么分成 2, 2 两个堆再称
3: 如果在 5个的堆里面,那么分成 2,3 两个堆在称

兄弟 你明白了么?
 
我觉得这也是一个想法啊!这样做把这12个球当成一个数组利用冒泡算法的特点,取出第一个然后和第二个比较;如果相等的话,那就是两个正常的。如果不等的话,那么两个中肯定有一个异常 的。现在只要在这两个球中找出那个异常的就可以了。只要从剩下 的球中拿出一个,然后再与开始的两个比较了。那就很简单了。三个要比较的球为i,j,k
int i,j,t,k;
if(i=j)
k为异常球
else

if (i=k)
j为异常球
else

i为异常球
按这里返回
 
后退
顶部