为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

12个球中找坏球

2012-02-11 3页 doc 22KB 25阅读

用户头像

is_887367

暂无简介

举报
12个球中找坏球在12个球,称三次,找出一个坏球,并判断轻重 现在把12个球随机分成3组: A[a1,a2,a3,a4],B[b1,b2,b3,b4],C[c1,c2,c3,c4] 对A组与B组进行秤重 Case1:Weight(A)=Weight(B) 说明有问题的球在C组,同时说明A,B组中的球是ok的。 现在取C组中的三个球组成D组,与A,B组中取三个正常球组成E组进行比较 if Weight(D) = Weight(E) { 说明D-C(C组剩下的那个球)...
12个球中找坏球
在12个球,称三次,找出一个坏球,并判断轻重 现在把12个球随机分成3组: A[a1,a2,a3,a4],B[b1,b2,b3,b4],C[c1,c2,c3,c4] 对A组与B组进行秤重 Case1:Weight(A)=Weight(B) 说明有问题的球在C组,同时说明A,B组中的球是ok的。 现在取C组中的三个球组成D组,与A,B组中取三个正常球组成E组进行比较 if Weight(D) = Weight(E) { 说明D-C(C组剩下的那个球)是异常球, 拿一个正常球与它秤一下就知道是轻球还是重球 } else if(Weight(D) > Weight(E){ 说明异常球在D组中且是个重球 取D组中的两个球进行比较,结果出来了 } else if (Weight(D) < Weight(E){ 说明异常球在D组中且是个轻球 取D组中的两个球进行比较,结果出来了 } Case2:Weight(A) > Weight(B) 取B中的两个球+A中的一个球组成D组,即D[b1,b2,a1] 用D组(3个球)与B'组(B中剩下的两个球+一个正常球)进行比较,即B'[b2,b3,c1] (一定要是与B'组比,因为它包含了B组中剩下的两个球) if Weight(D) = Weight(B'){ 说明B',D组中的球都是正常的,同时原来的B组全是正常球 根据第一次秤Weight(A) > Weight(B),说明不正常的的球在 A组剩下来的3个球中(a2,a3,a4)而且是重球 从(a2,a3,a4)取出两个球秤一下,结果出来了 } else if Weight(D) > Weight(B'){ D组: B中两个球+A中一个球,D[b1,b2,a1] B'组: B中两个球+一个正常球,B'[b2,b3,c1] Weight(A) > Weight(B) Weight(D) > Weight(B') 因为Weight(A) > Weight(B), 所以如果A中如果有问题球,只可能是重球;B中有问题球只能是轻球。 Weight(D) > Weight(B') 说明问题球就在D,B'组中 由于B中只能是轻球,所以D组中的那两个B组的球是正常球 如果有问题的球是轻球,那么它就在B'组中的B的两个球 如果有问题的球是重球,那么它一定就是D组中的那个A中的球,即a1 把B'组中的两个球(b2,b3)秤一下, 如果一样,说明问题球是D组中的A中的球,即a1,且是重球 如果重量不一样,轻的那个就是问题球,且是轻球 } else if Weight(D) < Weight(B'){ D组:B中两个球+A中一个球,D[b1,b2,a1] B'组:B中两个球+一个正常球,B'[b2,b3,c1] Weight(A) > Weight(B) Weight(D) < Weight(B') 因为Weight(A) > Weight(B), 所以如果A中如果有问题球,只可能是重球;B中有问题球只能是轻球。 因为Weight(D) < Weight(B') , 说明重量不一样不是因为D组中的A球的问题, 而是D组中的B中的两个球有问题,且问题球是轻球问题 把D组中的B中的两个球秤一下,结果就出来了 } Case3:Weight(A) < Weight(B) { 同Case2 } :    天平称重,有两个托盘比较轻重,加上托盘外面,也就是每次称重有3个结果,就是ln3/ln2比特信息。n个球要知道其中一个不同的球,如果知道那个不 同重量的球是轻还是重,找出来的话那就是n个结果中的一种,就是有ln(n)/ln2比特信息,如果不知道轻重,找出来就是2n(n个球中的一个,轻或者 重,所以是2n)个结果中的一种,那就是ln(2n)/ln2比特信息。   假设我们要称k次,根据信息理论,那显然两种情况就分别有:   (1)k*ln3/ln2>=ln(n)/ln2 (k>=1) 解得k>=ln(n)/ln3   (2)k*ln3/ln2>=ln(2n)/ln2 (k>1) 解得k>=ln(2n)/ln3   这是得到下限,可以很轻易证明满足条件的最小正整数k就是所求。比如称3次知道轻重可以从3^3=27个球中找出不同的球出来,如果不知道轻重就只能从(3^3-1)/2=13个球中找出不同的球出来。 ********* 核心: 替换 abcd efgh ijki 当abcd>efgh时,用fgh替换bcd,用ijk替换fgh,即变成 afgh VS eijk ********* ********* 下面从信息论的角度,更具一般性:http://ww123.net/baby/viewthread.php?tid=21839 分别为a b c d, e f g h, i j k l,取出abcd, efgh 第一种情形: 如果重量相等,则说明所求在 ijkl 中, 称量 i j , 如果相等,比较 a k ,如果a=k,则所求为 l(但不知轻重);如果ak不等,则所求为 k 。如果不等,比较 a i ,如果a=i,则所求为 j ;如果不等,则所求为 i 。 第二种: 如果 abcd 轻, 在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位: 如果afgh轻:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。 如果afgh重:说明所求在 fgh 中,且所求较重;比较 f g ,等重则所求为 h ;不等则重的为所求。 如果一样重:说明所求在 bcd 中,且所求较轻;以下同afgh重的情形。 第三种: 如果 abcd 重, 在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位: 如果 afgh 重:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。 如果afgh轻:说明所求在 fgh 中,且所求较轻;比较 f g ,等重则所求为 h ;不等则重的为所求。 如果一样重:说明所求在 bcd 中,且所求较重;以下同afgh轻的情形。
/
本文档为【12个球中找坏球】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索