IT公司经典推理面试题 - 拿钻石

csdn高校俱乐部 面试题 逻辑 

CSDN-木水辰

毕业生北京邮电大学

题目:

一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最
大的一颗?

要求和奖励(奖励活动已结束):

给出你的分析思路,条理清楚叙述明确且符合逻辑者,将获得高校俱乐部送出的 30 积分和 30 C币。

创建
2015-03-16
浏览
223531次
最新回复
2016-05-04
回复
59
4

kid home

学生天津工业大学

直接拿走第一层的钻石,当到达其它层时,将那层的钻石毁掉,那么最终自己手中的钻石将成为最大的一颗

2016年05月04日 20:39:17

自信哑了

毕业生玉林师范学院

其实这道题体现一种人生观和价值观
  本题并无标准答案,但是你考虑的时间越长,办法越多,但是说明越纠结!
  人生的追求并非完美,而是一种有所追求,但又知足常乐的生活态度。如果你什么都无所谓,随便拿一颗钻石,那是对自己和应聘公司的不负责任,但是你过于追求完美,或者一味要得到最大的,公司将认为你对于个人利益考虑太多,难以沟通,并且在遇到僵局时不能回旋,公司也将因此遇到诸多困难。
  正确的回答,应该是先不拿,观察1-4楼钻石放置规律,再利用2层进行验证,随后在7-10层按照规律拿自己认为最大的那个。
  如果在前6层都找不到规律,那就不要等了,第7层就拿吧!
  当然,可能最大的就在前几层,你没有拿到,但是没关系,人生的机遇就象拿钻石,你不一定拿到最大的,只要拿到其中一个,就是你的幸福了!
  最后一个都拿不到的,是最失败的。
  如果这个钻石是事业,你就一事无成;
如果这个钻石是爱人,你就一辈子独身了..............

2015年09月15日 10:40:59

淡定的攻城狮_LJ

学生北京理工大学

这个题目不可能说百分之百的确定能够拿到最大的钻石,只能保证自己以比较大的概率拿到较大的钻石。所以我的思路是:二分方式,前5层只是看,不拿钻石,后五层开始只要发现相比前五层的钻石,不需要是最大的,只要是第二大的也可以拿。

2015年08月20日 09:09:29

智慧的牛

学生温州大学

总共10层,如果采取保守的方法来看,最差的是拿到最小的那个,首先我们要避免这种情况,如果采取比前多少层最大的还要大的原则,可能会取到最小的,比如大小按照降序的规则排序的时候就会如此;但是我们拿的规则肯定是大于或者等于某一个基准线,那么这个基准线怎么取呢?
方案一:倒数位序法,首先前n个不取,之后每次都看一下当前的大小是否大于前面石头中最小的n个中的最大值,如果大于,则取,否则不取,直到最后一个。比如n取3,当前已经到第7个了,最小的3个钻石分别是12,13,14,其中最大的是14,这是只要当前的钻石大于等于15,就取。
方案二:均值法,前n个不取,而后每次判断当前值是否大于平均值,如果大于,则取,否则不取,直到最后一个。

2015年08月14日 16:39:16

耕地的蚂蚁

讲师广州市博颖信

你们为什么不能坐电梯到10。没次开门都不拿。等到10后走楼梯下来拿最大的那颗就行了。

2015年07月14日 16:15:59

Anno_ying

毕业生陕西电子信息

先拿一楼钻石和二楼比较,取最大,有最大和三楼比较,取最大。。。依次,到十楼就是最大的一颗!

2015年07月14日 14:04:11

郭玉亮

毕业生洛阳师范学院

坐电梯从1楼到10楼各停一次,记录钻石大小,不拿钻石。

走楼梯从10楼去最大钻石那一层拿。

方案优点:

1:走最少的路

2:拿最大的钻石

2015年06月29日 08:59:36

coolol911

毕业生上海科学技术

题目说的是只能拿一次,很简单的问题我把所有钻石踢进电梯。调快最大就是了

2015年05月27日 12:20:43

nagexiatian94

毕业生辽宁工程技术

 

先坐电梯从一楼到十楼,记录钻石大小,找到其中最大的所在楼层,然后坐电梯到该楼层,拿到最大的

 

2015年05月23日 10:49:46

c_jadey

毕业生华中师范大学

取第一个楼层的钻石大小为初值a,拿到最大钻石的概率是1/10.钻石是随机分布,我们统计第一层到第5层的钻石大小的值比a大的次数x,将x乘十分之一再乘5,得到的数值取整为钻石最大楼层

2015年05月05日 15:30:53

yandefu

毕业生浙江理工大学

先不要进电梯从一楼跑到十楼,每一层都比较一次拿大的,最后上十楼,进电梯,手里拿的一定是最大的.

2015年04月28日 09:11:34

最爱麦丽素

毕业生盐城工学院

没有新题目了么?好伤心~~~~

2015年03月30日 17:59:23

3show

讲师山东数网

 

此解法有一个漏洞,当前N层出现的最大价值钻石为8,第N+1层出现的钻石价值为9,这时是会取这颗钻石的。这种情况应该归为失败的情况中,但是在你的程序逻辑中它被计算为成功的情况。

 

 

2015年03月30日 15:40:10

游荡的灰太狼

学生辽宁科技大学

在不知道所有钻石大小的情况下,每个人对钻石的价值判定标准是不一样的。或许拿到1颗很小的,但是对于他来说就是最大的。从理性的角度来看,小心谨慎的人在5层左右拿到他心中最大的钻石,对于敢于冒险的人或许会等到最后一层。对于人生的看法也不同,富贵险中求。、

2015年03月30日 14:00:09

3show

讲师山东数网

 

 

本题的目的是考察面试者分析问题的能力。对于程序开发来讲,一般分为这几个步骤:确定解法,数学模型、算法实现

其中算法实现实际上是对数学模型的计算过程,对于这道题目,我们来分析一下前两个步骤

一、确定解法

这里的思路是开放的,不同的人有不同的解法。这道题目明显是不可能100%拿到最大钻石,那么我们可以换一种问法,如何才能有最大的机会拿到钻石。
在这里我的解法如下:

我们将拿取钻石的步骤分为两步

第一步:只看不取,前N层我们只观察钻石的大小,记住我们看到最大的一颗钻石的尺寸记为a。

第二步:取钻石,从第N+1层开始,如果我们发现,当前层的钻石比a大,则取这颗钻石。若直到最后一层依然没有发现比a大的钻石,则取最后一颗。

二、数学模型

我们假设钻石的价值是1-10,分析刚才我们定好的解法,取出最大钻石的充要条件为——前N层出现的最大钻石价值为R,R<10,N+1层向后,出现的第一颗大于R的钻石价值必须为10。

由此,这道问题已经被我们概括为一个数学问题——当N为几时概率最大。由于钻石是随机分布的,我们可以知道,这是一个“古典概率”问题。

设P为取出最大钻石的概率,前N层看到的最大价值为x的钻石时,取出最大钻石的概率为Px,则

P =∑ Px      //真心不会在这里输入数学符号。。。

 

做到这里,可能不少同学开始头疼了,这个概率的计算量非常高。如此复杂的程序让编写难度和工作量提升不少。所以我们必须想办法简化问题。

经过观察可以发现,P10=0,P9为决定性因子,其他因子P1-P8皆为极小概率事件。由于我们并没有精度性的要求,因此我们可以粗略的认为P ≈ P9。

这里我们说明一下P9的实际意义,它表示在前N层中出现价值为9的钻石,并且价值为10的钻石出现在第N+1层以后。

展开公式可得

P ≈ N/10  * (10-N)/9

   = (-1/90)*N*N + (1/9)*N

二次方程顶点为 (5 , 5/18)

由此可知,观察前5层,从第6层开始,发现比前5层中所见最大的钻石更大的则取,可以有大于 27.8%(5/18)的概率拿到最大钻石。

 

 

 

 

 

 

2015年03月30日 11:11:23

dutong0321

毕业生内蒙古工业大

这道题肯定没有绝对正确的答案。

我的想法是:前4层进行比较,要记下第二大的,并不是最大的。

然后,只要找到比第二大的,就马上拿上。

如果,到了第十层,依然没有找到,那就没办法了,拿上第十层的,走就是了。

关键点来了:不管第几层拿上以后,马上下电梯。

现在分析一下:首先你拿的肯定是比第3小的大的那个,但肯定不是最大的,不过,不拿最大的会提高比拿第十层的提高很高的概率。

如果,我们拿上之后就马上下电梯,无论这个是不是比较大的,只要我们不去探究上面那几层,那就肯定不会太遗憾。

如果,上面有比这个大的,但终究不是你的,相当于价值为0,甚至是负的。

如果,上面没有比这个大的,那省的浪费时间了。

2015年03月24日 22:43:20

yxyyg

毕业生电子科技大学

同样,首先去前5个样本。并分别判断他们之间的联系。如:1和2之间的关系,0、1.和2之间的关系,等等。直到找出联系,或者到5了还是没有发现联系,就直接取第6个。

如:通过样本取得他们的联系后,若是从下往上,是从大到小排序的话。在发现这个规律时,直接取出当前砖石。

2015年03月24日 22:30:55

ohyo

毕业生重庆大学

冒泡法,我看到题目也是这么想的。不过已经先被人回答出这方法啦。。

2015年03月24日 16:40:55

CSDN-木水辰

毕业生北京邮电大学

分析的非常清晰,恭喜你,获得高校俱乐部送出的 30 积分和 30 C币。

2015年03月23日 11:51:39

CSDN-木水辰

毕业生北京邮电大学

能够将概率论所学为所用,恭喜你,获得高校俱乐部送出的 30 积分和 30 C币。

2015年03月23日 11:42:31
Top_arrow