软件测试面试题:称球问题

称球问题

称球问题是最经典的一道趣味数学题目,经常出现于各种智力游戏及智力测试中,最常见的题目如下所示:

12个球中,有一个重量与其他的11个不同,但不知道是重还是轻。给你一个天平,只许称3次把这个不标准的球找出来,应该怎么称呢?

分析与解答

首先强调说明两点:

(1)不规则的球不知是轻还是重,一共12个球,因此最后必定是24种可能。

(2)任何时候如果天平相等,那么天平上的球都是标准球,可以作为后续参考球。如果天平不相等,下次称的时候将其中的一部分球交换位置天平保持不变,那么交换的球都是标准球,反之如果天平发生变化则不标准球就在交换的球之中。

为了使读者查看方便,12个球用1~12(数字)进行标识,其中已确定是标准球的号码加括号注明:

第一次{1加2加3加4}比较{5加6加7加8}

如果相等,第二次{9加10}比较{(1)加11}

如果相等,证明是12球不规则,第三次和任意球比较,12或者重或者轻两种可能

如果{9加10}大于{(1)加11}

第三次9比较10,如果9大于10并且{9加10}大于{(1)加11}证明是9重

同理如果9小余10,证明是10重

同理如果9=10,证明是11轻

如果{9加10}小余{(1)加11}

第三次9比较10,如果9大于10并且{9加10}小余{(1)加11},证明是10轻

如果9小余10,证明是9轻

如果9=10,证明是11重

至此刚好8种可能;

如果{1加2加3加4}大于{5加6加7加8}

第二次{1加2加5}比较{3加6加(9)}(关键把其中3,5球的位置交换)

如果相等,证明1,2,3,5,6为规则球,不规则球在4,7,8中(见说明2)

第三次7比较8,如果7=8并且{1加2加3加4}大于{5加6加7加8}证明是4重

如果7大于8,证明是7轻

如果7大于8,证明是8轻

如果{1加2加5}大于{3加6加(9)}

证明3,5,4,7,8为规则球,不规则球在1,2,6中

第三次1比较2,如果1=2并且{1加2加5}大于{3加6加(9)}证明是6轻

如果1大于2,证明是1重

如果1小余2,证明是2重

如果{1加2加5}小余{3加6加(9)}

证明不规则球在3,5中(因为位置变化天平变化)

第三次随便比较1与3,如果1=3,证明是5轻

如果1小余3,证明是3重

1大于3不可能,因为已经有第一次{1加2加3加4}大于{5加6加7加8}

这样刚好也是8种可能。

同样道理,{1加2加3加4}小余{5加6加7加8}时处理方法同上,也会有8种不重复的可能性,最终刚好是24种可能。

同样还是称球的问题,如果12个球你解决了,接着再考虑一下如何解决13个球吧,条件完全相同,13个球中有一个非标准球,仍然是称3次找出来,13个球是称3次的极限了。

分析与解答

有了称12个球的经验,下面就解释得稍微简单一些了,分组方式为4,4,5。

第一次仍然为{1加2加3加4}比较{5加6加7加8}

如果相等,第二次{9加10加11}比较{(1)加(2)加(3)}

如果相等证明不标准球是12或者13

第三次比较1和12,如果1大于12,证明是12轻

如果1小余12,证明是12重

如果1=12,证明不标准球是13

如果{9加10加11}大于{(1)加(2)加(3)},则说明不标准球在9,10,11中且为重

第三次9比较10,如果9=10,证明是11重

如果9小余10,证明是10重

如果9大于10,证明是9重

如果{9加10加11}大于{(1)加(2)加(3)},则说明不标准球在9,10,11中且为轻

第三次9比较10,如果9=10,证明是11轻

如果9小余10,证明是9轻

如果9大于10,证明是10轻

如果{1加2加3加4}大于{5加6加7加8}

第二次{1加2加3加5}比较{4加(9)加(10)加(11)}

如果相等,证明不规则球在6,7,8中且为轻

第三次6比较7 如果6=7证明是8轻

如果6小余7,证明是6轻

如果6大于7,证明是7轻

如果{1加2加3加5}大于{4加(9)加(10)加(11)}

证明不规则球在1,2,3中且为重

第三次1比较2,如果1=2证明是3重

如果1大于2,证明是1重

如果1小余2,证明是2重

如果{1加2加3加5}小余{4加(9)加(10)加(11)}

证明不规则球在4,5中(因为位置变化天平变化)

第三次1比较4即可,如果1=4证明是5轻

如果1小余4证明是4重

4的情况不成立

同样{1加2加3加4}小余{5加6加7加8}可以分析得出,合计8加8加9=25种可能。


个人简介


我是一名测试兼开发工程师,目前25K,目前做的是无人驾驶,欢迎和大家一起交流测试技术,一起高薪就业,我们还有一起打妖怪的群哦,还有面试题小程序哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面试题库test

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值