社区
C语言
帖子详情
一道微软的面试题:12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?哪为高人能给个详细程序
alexfq
2002-10-12 02:05:45
12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?
...全文
552
70
打赏
收藏
一道微软的面试题:12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?哪为高人能给个详细程序
12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
70 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heavensongs
2002-12-27
打赏
举报
回复
TO wwlxmai(云淡风轻) :
我仔细看了你的思路,大致没有错。指出一点:
通过3次测量,也无法知道那个坏球是重是轻。所以不能假设,只能靠观察这次指针的偏向和上两次是否一致。一致说明没有移动过,否则就是移动过。这是关键。
只有在三次过后已经知道坏求了,测第四次,才能知道是轻还是重。
heavensongs
2002-12-26
打赏
举报
回复
不知道这个程序能不能用递归实现。感觉有难度。哪位能照我的思路写一个贴上来??
rushman
2002-12-26
打赏
举报
回复
40个球4次机会
121个球5次机会
364个球6次机会
....
n次机会,n>1,可以解决
0 1 2 n-1
3 + 3 + 3 + ... + 3
十几年前我就推出了这个结果。老掉牙的问题,也是经典的问题(我父亲上学的时候就做过了^_^)
celeil
2002-12-26
打赏
举报
回复
搂主,你知道微软的“答题原则”么?他只要思路,不要程序。如果你连思路都没有,还编什么程序阿?能去那儿面试的人,只要有个思路,编程不是问题。
heavensongs
2002-12-26
打赏
举报
回复
不需要知道谁重谁轻。观察+推里。用不到什么数学知识。小学智力竞赛。
heavensongs
2002-12-26
打赏
举报
回复
可以结账了
heavensongs
2002-12-26
打赏
举报
回复
(1,2,3,4), (5,6,7,8),(9,10,11,12)
分成三组。
1。比较任意两组。如果平,则在第三组。有两次机会判断4个很容易。
如果不平,则第三组中的四个都是标准球。
2。接下来是循环移动。将左托盘的任意三个移动到右托盘,同时将右托盘的
任意三个移动到桌子上放在一堆。取四个标准球里的三个放到左托盘。
3。观察第二次指针。
->如果偏转不变,说明那个坏球没有移动过,那只能是左托盘或者
右托盘中那个没动过的。取出左托盘和右托盘中那三个从别处放进去的。
将右边那个移到桌子上,在右托盘放入一个标准球。如果还是不变,那可以肯定就是左边那个。
否则就是移出去的那个。
->如果平衡,则显然怀疑对象在从右托盘移出去的那三个里。清除左右托盘。
将这三个重新放到右托盘。取右托盘里的三个里一个放到左托盘,取另一个
放到桌子上,如果这第三次指针和第一次偏转一样,说明坏球在右托盘,因为第一次
他也在右托盘。平衡,就是那个移动出去的。反向,说明在左托盘。
->如果反偏。说明怀疑对像移动到了右托盘,清除左右托盘。将这三个放到左托盘,
和上面一样如法炮制。
我是受了楼上的启发。要写成程序还是蛮繁的。
13个也是如法炮制,循环移动。
coffeebike
2002-12-26
打赏
举报
回复
分三组A(4)+B(4)+C(4)
称A、B两组,如果相等,则将C(4)分成C(3)+C(1),从A、B中人取一组,分成A(3)+A(1),然后重新分组:A(3)+(A(1)+C(1))+C(3)成三组,称A(3)和C(3),如果相等,则C(1)是坏的,不相等,则C(3)有异常,即或重或轻,最后将C(3)分成C1(1)+C2(1)+C3(1)三组,称C1(1)和C2(1),相等则C3(1)是坏的,不相等,参照第二称的结果可以知道C1(1)、C2(1)哪个是坏的/*如果第二称中C(3)是重,则第三称中重的那个是坏的...*/
在来说第一称不相等的情况。
此时说明C(4)是好的,且设A(4)重于B(4),重新分组:A1(1)+B1(2)+C(1)和A2(1)+B2(2)+C(1)+A3(1)+A4(1),第二称称A1(1)+B1(2)+C(1)和A2(1)+B2(2)+C(1),分三中情况:
一)相等,说明A3(1)或A4(1)是坏的,且坏的是重的,第三称即可分辨
二)A1(1)+B1(2)+C(1)重于A2(1)+B2(2)+C(1),说明A1(1)是坏的且是重的,或者B2(2)有坏的且是轻的,第三称成B2(2)的两个,相等则A1(1)是坏的,不相等则轻的那个是坏的:)
三)A1(1)+B1(2)+C(1)轻于A2(1)+B2(2)+C(1),说明A2(1)是坏的且是重的,或者B1(2)有坏的且是轻的,第三称成B1(2)的两个,相等则A2(1)是坏的,不相等则轻的那个是坏的:)
YoziDream
2002-12-26
打赏
举报
回复
12个球分成3组,每组四个
拿出两组,放在天平上,有两种可能,平和不平,
1、平则在第三组里,可以解决
2、不平,记下谁重谁轻,
从第一组里拿出三个球放在一边,从第二组里拿出三个放在与第一组
从第三个里拿出三个放在第二组
称第二次
1、天平保持原来的偏向,则说明质量不同之球在第一、第二组中未
被动过的两球中,这时可以测出
2、天平偏向反转,则可知道在第二组拿出的三个球中,而且可以知
道此球轻重,可以测出
3、天平保持平衡,则在第一组拿出的三个球中,而且也知道轻重,
可以测出
YoziDream
2002-12-26
打赏
举报
回复
楼上的有点错误?
不需要知道是重还是轻也可以!
刚开始我也以为必须知道是重还是轻。
axuion
2002-12-26
打赏
举报
回复
帖主可以结帐了。
fxniao
2002-12-14
打赏
举报
回复
: kwok_1980(Mars)
就是这么回事,微软不会考真正的编程题。只是考考你的脑筋而已
libi
2002-12-14
打赏
举报
回复
我所写的估计被淹没了。下面是超星上的结论:
结论2:现有N个小球,其中有一个坏球不知比标准球轻还是重。
我们令H={log3(2N)}。(这里是以3为底的对数,花括号是天花板函数)
1)要保证在N个球中找出坏球并知道其轻重,至少需要称H次。
假设N≠2,我们有
2)如果N<(3H-1)/2,那么称H次就足够了;
3)如果N=(3H-1)/2,那么称H次足以保证找到坏球,但不足以保
证知道坏球比标准球轻还是重;
4)如果N=(3H-1)/2,而且还另有一个标准球,那么称H次足以保
证找到坏球和知道,知道坏球比标准球轻还是重。
zhanghk
2002-12-13
打赏
举报
回复
Cybergate(Cybergate) 说得对,到底考什么,要是没看过当时想的话估计就歇菜了
mifeng2
2002-12-13
打赏
举报
回复
lastcsdn2166(床边有一窗户,我觉的跳下去好简单)
写的很对,
不过
A: 1 9 10 11(9 10 11 为好的球)
B: 2345 C:6789(应该是6,7,8,12)
BigLeo
2002-12-13
打赏
举报
回复
将下面的讲解放在记事本中查看
====================================
说明:(关键在第二步的换球)
1、称量中,\、/、= 分别表示左轻右重、右轻左重、同样重。
2、括号中的数字表示球的编号。目的球:与其它球不一样重的球。
3、|________|表示对两组球进行称量。
=Step One=========================+=========+=======================
把球分成三组,选其中二组称: | |
(1 2 3 4) (5 6 7 8) | | (9 10 11 12 13)
|___________| | |
| |
结果一:\ |结果二:/|结果三:=
判断:或是目的球在1 2 3 4 |判断:与结|判断:目的球在
中,且是轻球;或是目的球在 |果一类同;|9 10 11 12 13中
5 6 7 8中,且是重球。 |在此省略 |
=Step Two=========================+=========+=======================
(1 2 9) (5 3 4) | |(1 2 3) (9 10 11)
|________| | | |________|
结果一:\ 结果二:/ 结果三:=| | \ / =
判断 判断 判断 | |目的球 目的球 目的球
目的球在 目的球在 目的球在| |在9 10 在9 10 在12
1 2 5三个 3 4中,并 6 7 8中 | | 11中, 11中, 13中。
球中,或 且是一个 且是一个| |且是一 且是一
是1 2中有 轻球 重球。 | |重球 轻球
一个球轻, | |
或是5球重 | |
=Step Three==+=========+==========+=========+=======================
(1) (2) | (3) (4) | (6) (7)| |(9)(10) (9)(10) (9)(12)
|___| | |___| | |___| | | |___| |___| |___|
| | | |
\ / = | \ / | \ / =| | 这儿不用再讲了吧
目 1 2 5 | 3 4 | 7 6 8| |
的 轻 轻 重 | 轻 轻 | 重 重 重| |
球 | | | |
=============+=========+==========+=========+=======================
lastcsdn2166
2002-12-13
打赏
举报
回复
程序员杂志上面与我的答案一样! 大家,请仔细看完!
lastcsdn2166
2002-12-13
打赏
举报
回复
我靠,楼上的大家,好好看看我的12个球的观点
我的绝对是正确的(早就知道这个题目里的坏球是不知到轻重问题的)
qh2871
2002-12-13
打赏
举报
回复
我个人认为
如够不知道轻重话4次搞定,分 4,4,4乘量,same则再与另一组2,2量,same
则从一样的组中选一个与不同的量可,
diff从重复搞定
puddings
2002-12-13
打赏
举报
回复
聪明的一猪写的对
不能盲目地就等分比较,因为不知道不一样的那个球是lighter or heavier
加载更多回复(50)
13
个
球
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
?
面试智力题
13
个
球
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
? 文章目录面试智力题前言一、分组:究竟是661还是445二、判断过程1.第一种情况:两个4份的
重量
不等如果坏
球
是轻的如果坏
球
是重的2.第二种情况:两个4份的
重量
相等通项公式 前言 这道题是来自
一道
微软
的
面试题
,并且无论是
12
个
球
还是
13
个还是n
个
球
这类型题都是有公式,有法可循的,我们在文字末尾给出其公式通解。 一、分组:究竟是661还是445 那么对于这道题很多人会自然想到二分法,但是你去尝试你会发
现
3次
MicroSoft
12
个
球
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
?那
13
个呢?
分三组:A(4) B(4) C(4) 一,若A(4)==B(4) 那坏的在C(4)中。C1(3)与A(3)一
称
,相等,C2(1)是坏的。否则 假设C1(3)>A(3),那在C1中取两个一
称
,可知那个(重的)是坏的。 二,假设A(4)>B(4), 分组A1(1)+B1(2) 与 A2(1)+B2(2) //第二步一定要求得 是两
个
球
是坏!!! 若A1(1)+B1(2) == A2(1)+B2(
190
13
个
球
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
?
20、
13
个
球
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
?
13
个
球
,就是分成4个、4个、5个,先拿两个四个上去, 如果平衡,则
问
题出在5个那组, 就在5个里任拿三个设为C1C2C3,再拿在前面4个当中拿三个正常的,分别放两边, 若平衡就简单啦,若不平衡,就出
现
C1C2C3重,或C1C2C3轻, 相当于就
知道
那个特别的
球
是比较重或者比较轻啦,接下就不用
12
(
13
)
个
球
1个
不同
重量
称
3次
称
出的
详细
分析
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7726193.html 作者:窗户 QQ:6679072 E-mail:6679072@qq.com 因为网上这道题没有
详细
思路,我想我还是补个
详细
思路。这道题目描述是这样的...
ACM中的智力题
[1]
称
球
问
题
12
个
球
和
一个
天平
,
现
知道
只有
一个
和其它的
重量
不同
,
问
怎样
称
才能用
三次
就
找到
那
个
球
。
13
个呢?(注意此题并未说明那
个
球
的
重量
是轻是重,所以需要仔细考虑)【ZOJ:哪
一道
?我忘记了-_-||】[2]过桥
问
题在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章