25匹马的问题

偶然看到个有意思的智力题,和大家一起讨论:

25匹马,要找跑的最快的前三,每轮可以有5匹马赛跑,只能记录先后,不能记录时间,最少需要跑多少轮

目前想到的解法:

首先分5组,赛5轮,去掉每组最后两匹,剩15匹;

然后5组第一名一起赛一轮,去掉最慢的两组,因为前面至少有3匹比这两组的都快;

此时剩下9匹,最快的一匹已经产生,

还剩8匹,再淘汰第3组的第二,三两匹,

第2组的第三匹(前面至少有3匹,故淘汰),

剩下5匹,赛一轮,得到最快的两匹即可。

时间: 2024-08-06 15:43:19

25匹马的问题的相关文章

25匹马的角逐

问题是这样的:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛.假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少 得比多少场才能知道跑得最快的5匹马. 注意: "假设每匹马都跑的很稳定" 的意思是在上一场比赛中A马比B马快,则下一场比赛中A马依然比B马快. 稍微想一下,可以采用一种 竞标赛排序(Tournament Sort)的思路. 见<选择排序 > (1) 首先将25匹马分成5组,并分别进行5场比赛之后得到的名次排

图解25匹马的选马问题

题目一:对于25匹马,有一个赛场,赛场有5个跑道,不使用计时器(也就是每次比赛只得到本次的比赛的顺序),试问最少比多少场才能选出最快的三匹马? 思路: 0)前5场:这个题相对比较简单,25匹马至少要全部参加比赛,所以把25匹马分成5组进行比赛.这样我们就可以得到比赛结果如下: 1)选整体第1名:现在我们要选整体第一名,可能成为整体第1名的马匹为:{A1.B2.B3.B4.B5},那么第6场比赛为[A1,B1,C1,D1,E1] 比赛结果:第6场得到整体第1名 2)选整体第2.3名:根据矩阵关系,

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

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/45887395 http://www.llwjy.com/blogdetail/208a6ac5e85d6078810047731d02c062.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

【算法研究】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。

答案是7次. 1. 首先将25匹马分成5组a.b.c.d.e进行比赛.比赛的次数就是5次.得到每组的第一名,分别编号a1,b1,c1,d1,e1. 2. 然后我们将每组的第一名进行比赛,得出结果.假设a1>b1>c1>d1>e1.(大于号表示a1比b1快,1表示第一名).在这个地方我们可以推断出,a1是所有马中最快的,所以它是第一名.d1,e1不可能是前三的马,同时这两匹马所在的组也不可能是前三的马.所以排除这两组马,还剩三组15匹马.现在需要找出第二快和第三快的马. 3. 第二名

如果要25匹马中选出跑得最快的3匹,每次只有5匹马同时跑,最少要比赛几次?

7次 首先分成5组A,B,C,D,E,赛5场 得到a1,b1,c1,d1,e1,假设a1>b1>c1>d1>e1 (这里可以改变序号,但不改变次序) 推出a1为第一的马,d1,e1不可能是前三的马,所以d1,e1不用参加最后一场. 同时推理出可能是第二第三的马是:a2,a3,b1,b2,c1 ,(推理理由,有两匹以上比它快的就自动出局) 然后a2,a3,b1,b2,c1再赛一场,其中前二的马即是第二,第三的马. 还要证明7次是最少的答案,这需要证明6次不可以..虽然我可以肯定答案是

64匹马,8个赛道,找出前4名最少比赛多少场?——最快10次,最慢11次;

64匹马,8个赛道,找出前4名最少比赛多少场? 答案原创,转载请注明出处:http://www.cnblogs.com/reanote/p/find_4th_in_64horse.html 第一步:全部马分8组,各跑一次,然后淘汰掉每组的后四名(8次): 第二步:取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马(1次): 分析:其实这时候红色区域的马也可以淘汰了,A1可以直接晋级: 第三步:A2.A3.A4.B2.B3.C1.C2.D1八匹马跑一次,即:在剩下需要排名的马中,除了B1外,

假如你是动物农场里一匹马或是鸡,你会怎么做?

<动物农场>(Animal Farm)是英国著名作家乔治·奥威尔写的一部反乌托邦寓言小说,这本书几年前还是禁书,现在你能在正规渠道读到这本书,本身也说明我们确实在进步. 回看历史长河,动物农场里的故事在无数次的上演,成功了的,就像书中的猪一样,取代了人成为了新的当权者:失败了的,也就无声无息的淹没在历史的潮水之中,无人记起.历史的车轮就这样翻滚着,成功的,站上潮头,矗立潮头几百年,混得不好,十几年就被新的集团所取代.不变的是,无知的人民成为一波又一波新旧阶层的棋子. 一个令人深思的问题,假如你

36匹马,6条跑道问题(C++实现)

问题描述 有36匹马,要在有6个道的跑道上跑,每次最多只能跑6匹,不用计时器,问最少需要跑多少次可以求得最快的三匹马? C++实现 #include <ctime> #include <cstdlib> #include <iostream> #include <map> using namespace std; typedef map<int,int *> IntpIntMap; //冒泡排序 void bubbleSort(int arr[]

java编码 100匹马 100块瓦

我给分为了两块  一个专门写代码    一个专门输出  看结果  用到太多的 if   还有一个简单的 没有用到太多的 if 判断 没有写注释  知识点都在我发的那些博客里面  如果还是有不懂的  可留言  补上注释 代码类 :  if 判断的 /** *    问:有100匹马 有100片瓦, *          大马能托3片瓦,中马能托2片瓦,三只小马能托一片瓦,正好这100匹马,把这100片瓦拉完. *                  问有多少匹大马,多少匹中马,多少匹小马? */pu