13球一天平题的N种解法。

iamnobody 2011-09-28 08:12:54
《这种面试题真的是10分钟可以做出来的吗?》中,答案丰富多彩,但是“2分法”的竟然占了主导地位。。。原因应该是因为楼主没有把问题说清楚:
13个球一个天平,现知道只有一个和其它的重量不同(不知道到底是轻了还是重了),问怎样称才能用三次就找到那个球。

本来想增加一个要求,就是要求出到底是重了还是轻了。但是后来才发觉,我之前的想法是错的,13个没法求出重轻,根据这个大牛的说法:http://mindhacks.cn/2008/06/13/why-is-quicksort-so-quick/ by #66
但是12球是可以的,虽然感觉信息量有点多,但是在天平这个特定的工具上,无法增到13个了,

下面给出N种解法:
先给楼主的吧:




以下称质量不同的球为目标球:
4,4,5 分A,B,C三堆(以下解法都是这样分,对于12个是4,4,4);
A,B比较:
case 平:
获得正常球8个。
find5:(标号)
剩下的5(或对于12个是4)个球中取出3个。与正常的比。
find3: case 取出3球较重,则目标球重。3中取2个放天平,重的那个是目的球。如果平,剩下的1个为目标球。
case 取出3球较轻,与上类似。
case 平: 对于13个球情况,剩下2个取一个与正常的比,如果平,就只能知道剩下1个是有问题的球,但不能知道它轻重。

case A 重:
获得正常球5个。
命名A中球:A1,A2,A3,A4:
B: B1,B2,B3,B4:
取出A4,B3,B4;
将正常球5个与A1,A2,A3,B1,B2 比较:
case 平:则问题出在取出球中。 用 A4,B4 与正常球2个比较。如果 A4,B4,较重,则A4为目的球,
且较重。如果A4,B4,较轻,则B4为目的球,且较轻。如果A4,B4与正常球平。则A3为目的球,且重。
(注意:第一次比较知。A组较较重,其中的球要么正常,要么有较重的,是不可能有较轻球的。)
case A1,A2,A3,B1,B2 较重,则目标球较重,且在A1,A2,A3中。跳到find3.
case A1,A2,A3,B1,B2 较轻,则目标球较轻,且在B1,B2 中。 略。
case B 重: 略。

end

饱受质疑的#3 mstlq 板主大人的解法: #18 stendson 解法与此相似,不重复。
就是分成4个、4个、5个,先拿两个四个上去,
如果平衡,则问题出在5个那组,跳到find5.
如果不平衡,假设现在是A重B轻,
取A1+A2+B1放天平一边(设为左边),
再取A3+A4+B2放另一边(右),
若平衡,就在B3/B4任拿一个跟C1上去称就行了,
如果不平衡,那么假设
情况一:左重
则是A1/A2/B2有问题 (同上解法的注意)
直接把A1A2放两边称,重的那个有问题,
如果平衡就是B2有问题
情况二:右重
就是 A3/A4/B1有问题,方法同上


#25 meqxx 的解法:

将球分成三堆,记为甲乙丙三组,首先将甲乙两组放上天平,看是否平衡?(第一次使用天平)
有两种情况:1、天平平衡。2、天平不平衡。
第一种情况:天平平衡
可以判断次品球在丙组内。从丙组中取出三个球与乙盘中任三个球交换,看天平是否还平衡?(第二次使用天平)
{
又有两种情况:1、天平平衡。2、天平不平衡。
第一种情况:天平平衡
可以断定丙组中剩下的那个就是次品。
第二种情况:天平不平衡
可以断定刚从丙组中取出的三个球中有一个是次品。且可以判断出次品球是轻还是重!!(看天平乙盘是下降还是上升:下降,次品球重;上升,次品球轻)
要想从三个球中找出哪个是次品球,且已知次品球是轻是重,就不用我说了吧!
}
第二种情况:天平不平衡
可以判断出丙组中全为好球。
不失一般性,假设甲盘重,然后从丙组中取出三个球与乙盘中任三个球交换;并将乙盘中剩下的那只球与甲盘中的任一球交换,看天平是否还平衡?(第二次使用天平)
{
又有两种情况:1、天平平衡。2、天平不平衡。
第一种情况:天平平衡
可以判断出从乙盘中取出的三只球中有一个为次品,且次品球轻。下面最后一步就不用我说了,与上同。
第二种情况:天平不平衡
此时天平不平衡时亦有两种情况:1、不会改变甲乙两盘的原有轻重格局。2、改变甲乙两盘的原有轻重格局。
{
1、可以判断次品球在甲盘剩下的三只球中,且次品球重。下面最后一步就不用我说了,与上同。
2、可以判断从乙盘中与甲盘中交换的两只球中有一只必为次品,但此时不知道次品球是轻还是重。最后一次使用天平是从两只球挑出次品球,应该不用我说了吧。
楼主注:参考find3的第三个case那样分别出轻重。
}
}


#27 lunux7985 的图太大的,我看不了。看气势应该可行。。。



最后还是要问个C++的问题。要找工作了,大公司好还是小公司好?应该问,大公司和小公司在薪水,福利方面的差别有多大(我知道肯定是大公司好)。还有加薪,升职方面的机遇怎么样?
...全文
431 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang8961 2011-09-30
  • 打赏
  • 举报
回复
顶起,第一种就好!
iamnobody 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 luciferisnotsatan 的回复:]
感觉上几种解法都差不多。都要分析天平往哪倒。拿法不同。

大公司比较正规,稳定。
小公司就看你自己的眼光(有没有VC的眼光)了。
[/Quote]

嗯,毕竟题目给出的是天平,,不分析天平往哪边倒怎么做。。。。
小差异可以体现思维方式的不同。

vc是什么?珍爱生命远离vc6
追求执着 2011-09-29
  • 打赏
  • 举报
回复
这个八个球那都是一个道理吧!
顶下!
nand库路泽 2011-09-29
  • 打赏
  • 举报
回复
难得解释的这么详细,不顶不行啊!!
MYMGrub 2011-09-29
  • 打赏
  • 举报
回复
顶之,有分就更好了...
yxriyin 2011-09-29
  • 打赏
  • 举报
回复
牛逼 学习了
luciferisnotsatan 2011-09-29
  • 打赏
  • 举报
回复
感觉上几种解法都差不多。都要分析天平往哪倒。拿法不同。

大公司比较正规,稳定。
小公司就看你自己的眼光(有没有VC的眼光)了。
北辰天云 2011-09-28
  • 打赏
  • 举报
回复
接分,看过原帖
a554187160 2011-09-28
  • 打赏
  • 举报
回复
嗯,很好的解法,第一眼看题想到二分了,可是不知道轻重不行,看了楼主的揭发,佩服啊
iamnobody 2011-09-28
  • 打赏
  • 举报
回复
最后一个楼主注标错地方了,注意,应该是将两个与两个正常的比。
演地 2011-09-28
  • 打赏
  • 举报
回复
两个球,毫无鸭梨。。。
5t4rk 2011-09-28
  • 打赏
  • 举报
回复
楼主辛苦了

藏了
pathuang68 2011-09-28
  • 打赏
  • 举报
回复
有意思...收藏之
满月的愿望 2011-09-28
  • 打赏
  • 举报
回复
我就说,12个球毫无压力
mengmingtao 2011-09-28
  • 打赏
  • 举报
回复
顶起来~。jf

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧