25匹马最少多少次可以选出前3

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/45887395

http://www.llwjy.com/blogdetail/208a6ac5e85d6078810047731d02c062.html

个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~
-------------------------------------------------------------------------------------------------

问题描述

      25匹马,5个跑道,每次只能泡5匹,用最少的次数选出最快的前3匹?


解决方案

      下面的解决方案最少7次,具体如下:

1)把25匹马随意分成5组,分别赛跑,记录每组的名次;

2)从这5组中分别取出每组的第一名,跑第六场,假如第六场的名次如下:第一名在X组、第二名在Y组、第三名在Z组、第四名在J组、第五名在K组;

3)取X组的第二名、第三名,Y组的第一名、第二名,Z组的第一名来跑第7场;

最后前三的结果就是:第一名是第六场的第一名,第二名是第七场的第一名,第三名是第七场的第二名。


解决方案分析

      解决方案中的第一步我们就不再啰嗦了,就从第二步开始,在第六场中,我们取每组的第一名来赛跑,可以得到第六场的第一名一定是所有马中最快的,所以第一名也就确定了,同时第六场跑完之后,所有马的最高名次也就确定了,我们简单描述如下:

组别:小组第一  小组第二  小组第三  小组第四  小组第五

X组: 第一名--最好第二--最好第三--最好第四--最好第五

Y组:最好第二--最好第三--最好第四--最好第五--最好第六

Z组:最好第三--最好第四--最好第五--最好第六--最好第七

J组:最好第四--最好第五--最好第六--最好第七--最好第八

K组:最好第五--最好第六--最好第七--最好第八--最好第九

      因此我们第七次只需要把可能是前三的马匹(X组的第二名、第三名,Y组的第一名、第二名,Z组的第一名)(正好5匹)来赛跑第七场,我们就可以知道前三的马匹是哪3匹了。


面试拓展

      上面这个题目可以当作面试题,用来考验被面试人的思维方式,如果是计算机相关的,我们还可以把这个题目稍微变型下,让它成为计算机的需求描述,下面是我的改编:


      问题描述:目前存在一个接口,可以给出用户活跃度之间的排序(降序),但是这个接口有一个缺点,一次做多可以处理5名用户,现在有25名用户,最少调用多少次这个接口可以获得活跃度前三的用户?


      当然关于这个题目的改编应该会有很多,介绍这个题目的目的就是想说名一个问题,我们在完成一步之后(第六场),在开始下一步的时候希望可以停下来想一想,这一步完成了是否对整体有影响,也许就是这个停下来,能够让我们少走很多的弯路。


另一个面试题

      这还有一个面试题目,也是考验思维方式的,这里和大家分享下:有1000瓶液体(正常,无毒),但是由于工作人员失误,将毒药滴到了其中一瓶中,从外观和气味上完全无法分辨出那一个是被污染过的,我们只知道这个毒药的毒发期是7天,实验室有10只小白鼠,只有7天的时间,如何实验才能知道哪一瓶是被污染的?

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值