25匹马问题

news/2024/11/8 0:52:43/

题目:如果要25匹马中选出跑得最快的3匹,每次只有5匹马同时跑,最少要比赛几次,才能确保得出结果?

25匹马看成25个点,每次比赛在参赛的5匹马之间引入4条有向边,1->2->3->4->5,数字表示参赛马的成绩排名。这样最后能形成一个有向无环图, 我们需要得到的是前三名的节点a, b, c, 其中a->b->c, 并且c是剩余节点的祖先。六次比赛(分5组各自比赛,之后后每组的第一名比赛)之后,所有的节点已经连成了一个二叉堆,根节点是第一名。只需要让左右子堆的顶点和它们的子节点一起再比一次,就能决出2,3名。

图所示,红圈内是第七次比赛的参赛马匹,绿色表示一个可能的结果和排名。

简单说明7次的最优性,因为每次比赛引入4条有向边,25个顶点要形成树需要24条边,就至少是6次比赛,但6次比赛甚至都不能确定第二名,因为假如根节点只有一个子节点,就说明根节点本身只参加了一组比赛,它的某个子节点参加了至少两组比赛,这时候只要改变这个子节点除了和根节点的比赛外另一场比赛的结果,就能破坏树的结构使之成为polytree,甚至连第一名都没法决定了。

最后,如果要给25匹马全部排名的话,就变成了BIBD(Balanced Incomplete Block Design)问题


题目:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马?

思路:排除不可能排在前5的马匹

求解过程如下:
(1)25匹马分五组跑5场得到每组的排序。
(2)第6场:用每组的第一名来跑。得到这五组中第一名之间的排序。如图1所示


图1 第6场结果
如图1所示,图中红色圈表示可以不需要比较的马
(3)第7场:从6-1所在组选出排名2、3的马,从6-2所在组选出排名第2的马,加上6-2和6-3跑进行比赛。
a. 假设比赛结果如图2a所示。


如图2a所示,实际上在第6场之后已经得到了所有马中的第1名(图中绿色点)。同时根据第7轮的比赛结果,又得到了一些
不需要比较的马(图中新增的红色点),而且可以确定所有马中的第2和3第名分别为7-1和7-2。再用剩下没有确定的4匹马
比赛一场即可以得到所有马中的第4和第5名。这种情况下,最多需要比赛8场。

b. 假设结果如图2b所示


 确定所有马中的第2和3第名分别为7-1和7-2后,还剩下8匹不确定的马。先任意取出5匹来比,得到前两名,再用他们和剩下
的三匹比一场,可以得到所有马的第4和第5名。因此,最多还需要比2场。
  综上所述,最坏情况下需要9场比赛才能达到目标。最坏情况出现在6-2和6-3变为7-1和7-2时,这种情况下需要9场,其他
情况都只需要8场。利用画图的方法在每轮比赛后可以直观的删去不需要参与比赛的马,同时选择参与下一轮比赛的马。


http://www.ppmy.cn/news/601457.html

相关文章

测试题:64 匹马,8 个赛道,最少多少次比赛找出最快的 4 匹马?

文章目录 问题一:64 匹马,8 个赛道,最少几场比赛找出最快的4匹马?问题二:64 匹马,8 个赛道,最少多少次比赛对所有马进行排序? 问题一:64 匹马,8 个赛道&#…

现有2头猪、3头牛和4只羊,它们各自的总价都不满1000元。如果将2头猪与1头牛放在一起,或者将3头牛与一只羊放在一起,或者将4只羊与1匹马放在一起,那么它们各自的总价都正好是1000元。问猪、牛、羊

问题:现有2头猪、3头牛和4只羊,它们各自的总价都不满1000元。如果将2头猪与1头牛放在一起,或者将3头牛与一只羊放在一起,或者将4只羊与1匹马放在一起,那么它们各自的总价都正好是1000元。问猪、牛、羊各是多少钱&#…

64匹马,8个赛道,最少多少次比赛找出最快的 4 匹马,以及对所有马进行排序

问题:64匹马,8个赛道,最少几场比赛找出最快的 4 匹马,最少几场对所有马进行排序 问题一:64 匹马,8 个赛道,最少几场比赛找出最快的 4 匹马 问题中隐含的意思:   1、就是每次比赛…

25匹马赛跑

25匹马通过赛跑来决出前三名,每轮最多5匹马参赛,求最少需要几轮? 条件: 1、最多5匹马一组,可以决出本组比赛的次序。 2、没有计时工具,假设马每轮的速度相同。 每次都排除不能争夺前三名的马是关键 7轮就可…

64匹马8条道找到最快4匹最少需要几次

64匹马赛跑问题 这题是我之前一段时间在网上看到的一道面试的思维题,题目的描述大致如下: 现有64匹马,8条赛道,如何用最少的比较次数找出最快的4匹 刚看到这道题时,我在想如果有计时器的话,64匹马分8组跑…

c语言 100匹马 编程,编程,百马百担有关问题,有100匹马,驮100担货,大马驮三担,中马驮2担,两匹小马驮一担,求大、中、小各多少匹...

编程,百马百担问题,有100匹马,驮100担货,大马驮三担,中马驮2担,两匹小马驮一担,求大、中、小各多少匹? 编程,百马百担问题,有100匹马,驮100担货,大马驮三担,中马驮2担,两匹小马驮一担,求大、中、小各多少匹? 分享到: ------解决方案-------------------- 数学…

腾讯面试:赛马问题【超详细图解】64匹马,8个赛道,找出前4名最少比赛多少场?

目录 常规思路正确答案解析第一轮:8场第二轮:1场第三轮:1场或2场总结 引子:在面试大厂时,怎么也没想到会考我一道脑筋急转弯。 问题:有64匹马和8条跑道,每次只允许最多8匹马同时比赛&#xff08…

64匹马8个跑道问题

64匹马,8个跑道,假设马发挥稳定且没有体力问题,需要多少场可以决出所有名次(前4名/前8名)? 方法一:归并方法,49场 1). 把64匹马分成8组,先把每组排个序&…