现有一个很有趣的问题寻求计算机解法 100分奖励

x_q_y 2000-08-30 12:14:00

一个有趣的问题研究一下:
现有12个大小一样小球,已知其中又一个小球重量上不一样,但不知道是重了还是轻了,给你一个天平(没有砝码) 在3次之内找出那个重量不一样的球.

...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
x_q_y 2000-08-31
  • 打赏
  • 举报
回复
要说答案嘛qingrun回答的比较条理,很容易编程,但是先来后到嘛!所以peng_hui得75分,
qingrun得25分
青润 2000-08-31
  • 打赏
  • 举报
回复
虽然少了一点,不过,还是感觉你比较爽快,那边那个人到现在还没有给分呢!嘻嘻~~~
opkj 2000-08-30
  • 打赏
  • 举报
回复
可以使用加法么。思路是既然2的N次方不够快,那么就使用4的N次方。
青润 2000-08-30
  • 打赏
  • 举报
回复
方法也给你(不需要源程序吧?^_^):
3次不仅能判断出哪一个是非标准球,还能知道非标准球的质量比标准球的大还是小,方法如下︰

1、将12个球分为3组,每组4个,编号为A、B、C;
A包括1、 2、 3、 4;
B包括5、 6、 7、 8;
C包括9、10、11、12。
2、取A,B两组,放在天平两端,有两种情況:
3、A=B:则A,B均为标准球,从C组取出三个球9、10、11与三个标准球比较:若相等,则将剩下的一个球12就是非标准球,与标准球比较就可以知道12比标准球重还是轻;若三球比标准球轻,则可从中取两球9、10比较,若9=10,则11比标准球轻,若9<10,9为非标准球,若9>10,则10位非标准球;若三球比标准球重的情况与之类似。
4、A<>B:C组为标准球,不妨设A组<B组,因为A组>B组是完全一样的。从A组取出三球1、2、3,剩余一个4(其实取那三个都可以,这里以次为例),从B组取三球5、6、7放入A组,剩余一个8,从C中取三个标准球放入B组。
这时A组有4、5、6、7,B组有8和三个标准球,天平有三种变化情况︰
A<B,说明4、8中有一个为非标准球,将4与标准球比较,若相等,则非标准球为8且比标准球重,否则非标准球为4且比标准球轻;
A=B,说明B组全部都是标准球,则非标准球在A组中拿出去的那三个(1、2、3)中,且非标准球的质量小于标准球的质量,从1、2、3中取1、2两球比较,若1<2,则1为非标准球,若1>2,则2为非标准球,若1=2,则3为非标准球;
A>B,说明非标准球比标准球重,且非标准球在从B组拿到A组的三个球(5、6、7)中,从5、6、7中取5、6两球比较,若5<6,则6为非标准球,若5>6,则5为非标准球,若5=6,则7为非标准球。
青润 2000-08-30
  • 打赏
  • 举报
回复
softsprite老兄说得很对。程序我都已经写出来了。方法都在那个问题呢,你去看看吧。
U皮特U 2000-08-30
  • 打赏
  • 举报
回复
有没有搞错?!这个问题很有趣吗?又有人提出来考大家的“智力”,提问之前先查一查论坛嘛。上一次有人问这个问题好象在不久前,已经有好多种解决方法了!我记得是hyzx2000提问的,还没有给分呢!看一下http://expert.csdn.net/Topic/24906.shtm,答案都在上面。
peng_hui 2000-08-30
  • 打赏
  • 举报
回复
该不会又是哪家公司的面试题吧? ;)
peng_hui 2000-08-30
  • 打赏
  • 举报
回复
不仅能找出小球还能知道是轻是重。以下是一种方法:
给小球编号1~12,以下用括号表示天平两边分组。
平分成三份,先取两份来称(1 2 3 4)(5 6 7 8) (第一次)。
1、假如第一次相同,说明目标球在(9 10 11 12)中,再称(1 9)(10 11) (第二次)
a、假如一样重,说明12号球与众不同,将它与任一球称即可知道是重是轻 (第三次)
b、假如左重右轻,说明不是9号重就是10或11号轻,只要称(10)(11)即可知道。(第三次)
c、假如左轻右重,则与上面同理可推。
2、假如第一次左重右轻,说明要么1234中有一球重要么5678中有一球轻,这时称(1 5 6)(2 7 8) (第二次)
a、假如一样重,说明3号和4号中必有一球重,称它俩就可知道。(第三次)
b、假如左重右轻,说明要么1号重,要么78中有一球轻,则称(7)(8)即可。(第三次)
c、假如左轻右重,说明要么2号重,要么56中有一球轻,称(5)(6)即可。(第三次)
3、假如第一次左轻右重,则与上面2同理可推。

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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