博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用天平3次,从12个乒乓球找唯一1个轻重未知的废品
阅读量:6420 次
发布时间:2019-06-23

本文共 1208 字,大约阅读时间需要 4 分钟。

     前些天在知乎看到一个问如何鉴定程序员水平的问题,其中一个答主建议用智力题考验程序员解决问题的能力(我们在此不讨论答主的观点),然后就留了这么一个问题供大家思考。当时思考了一阵,没头绪(我真不是答主认为的优秀程序员╯□╰)就此放下了。恰好今天在看《控制论与科学方法论》这本书时,看到这本书对此题目的解答,但文中只给了第一步的推导,然后就同理了……然后我就纠结了N久,才把这个同理给想明白。下面把书中的解法和自己想明白的分享给大家。

     书中是使用控制能力来分析的(控制能力 = 原可能性空间大小 / 施加控制后可能性空间大小)。每个球都可能是废品中或轻或重两种状态,因此总的可能性空间大小是12×2=24个状态。目标是唯一的一个状态,因此要求控制能力为24/1=24。天平每次称量可确定左边重,右边重,两边同重3个状态中的一个,可能性空间缩小为原来1/3,因此天平控制能力为3,3次称量,总控制能力为3×3×3=27 > 24。所以此问题有解。

设第一次称x个球,留y个球。若天平平衡,则废品在y个球中,则有

2y/9 ≤1   (1)

如果天平不平衡,则废品在x个球中。已知x/2个不会是轻的,x/2个不会是重的,所有的可能性空间为x,则有:

x/9≤1   (2)

x+y=12   (3)

由此解的x=8,y=4。书中说用同样的方法就可以获得第二次第三次的具体解法了。这个“同样的方法”让我好生纠结,因为第二次情况更复杂了,具体该怎么求解呢?

      第一次称量两边平衡的情况很好想通,我们来考虑两边不平衡的情况。天平上比较轻的那一侧我们记为a,另一侧记为b。现在可以假设从a中拿a­­1个放入天平左边,a­­2个放入天平右边,留下a3个;从b中拿b­­1个放入天平左边,b2个放入天平右边,留下b3个。则有:

a1+a2+a3=4   (4)

b1+b2+b3=4   (5)

a1+b1=a2+b2   (6)

若天平平衡,则有:

(a3+b3)/3≤1   (7)

若天平不平衡且左边轻,则那a1和b1个球不可能是重的,又在第一步的称量中可知那b1个球不可能是轻的,所以可以判定那b1个球是正常的;而且a2和b2个球不可能是轻的,又在第一步的称量中可知那a2个球不可能是重的,所以可以判定那a2个球是正常的。此时剩下a1和b2个球待定。因此有:

(a1+b2)/3≤1   (8)

若天平不平衡且左边重,则同理有:

(a2+b1)/3≤1   (9)

根据(4)-(9)可以求得两组解a1=a2=1,a3=2;b1=b2=2,a3=1;与a1=a2=2,a3=1;b1=b2=1,a3=2。

      第三步就可以按同样的方法推得了。

      控制能力解决问题的视角真独特,自叹还是读书少啊。

注:本文中给出的解后来发现并不全面,只是多个解中的一个。请参考评论18楼与21楼书中解答截图。

转载于:https://www.cnblogs.com/szhx/p/4782203.html

你可能感兴趣的文章
理解缓存
查看>>
im也去中心化?Startalk(星语)的去中心化设计之路
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>
一次完整的HTTP请求
查看>>
Nginx限制带宽
查看>>
All Web Application Attack Techniques
查看>>
归档日志ORA-19809: 超出了恢复文件数的限制
查看>>
精品德国软件 UltraShredder 文件粉碎机
查看>>
PANDAS 数据合并与重塑(join/merge篇)
查看>>
文件时间信息在测试中的应用
查看>>
Exception loading sessions from persistent storage (tomcat异常)
查看>>
直播疑难杂症排查(8)— 播放杂音、噪音、回声问题
查看>>
安装乌班图系统,并且演示有趣的linux命令,你还怕对linux无兴趣吗
查看>>
如何写gdb命令脚本
查看>>
Android ListView展示不同的布局
查看>>
iOS宏(自己使用,持续更新)
查看>>
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>
linux下mongodb定时备份指定的集合
查看>>