博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
25匹马取前5,每次只能比5匹
阅读量:6821 次
发布时间:2019-06-26

本文共 1227 字,大约阅读时间需要 4 分钟。

hot3.png

问题: 

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

 

思路:

先将25匹马分成五组,进行五场比赛。第六场比赛可以考虑都取各个小组的第一名(或第二名)。假设都取各小组的第一名,根据这场比赛的排名,将原来的小组分别编号为abcde,并将原来的25匹马分别编号为:

a1  b1  c1  d1  e1

a2  b2  c2  d2  e2

a3  b3  c3  d3  e3

a4  b4  c4  d4  e4

a5  b5  c5  d5  e5

其中XiX表示组的编号,i为在该组的排名,则有a1 > b1 > c1 > d1 >e1

 

注意到:a3b2c1三匹马中跑得最快的必然是前四之一。因此,第七场比赛,这三匹马必然参加,剩下两个名额待定。先考虑这三匹马的排名:

(下面用[]集合表示已确定是前五的马,用{}集合表示剩下的马中所有有可能是前五的马。)

  a3 b2 c1  a3 c1 b2:   [a1, a2, a3]  +  {a4,a5,b1,b2,c1}

  b2 a3 c1:  [a1,b1,b2]  +  { a2,a3, b3,b4}

  b2 c1 a3:  [a1,b1,b2]  +  {a2,b3,b4,c1,c2,d1}

  c1 a3 b2:  [a1,b1,c1]  +  {a2,c2,c3,d1,d2,e1 }

为了能在第八场确定前五,必须将上面的{a2,b3,b4,c1,c2,d1} {a2,c2,c3,d1,d2,e1} 的候选马匹数减少到五匹,因而剩下的两个名额必须是这两个集合的重复元素,即是{a2, c2, d1}中的两个。由于a2跑得比a3快,若选择a2的话,不能利用前面的分析,因而剩下两匹马选择 c2  d1

 

第七场比赛:a3b2c1c2d1 的前两名是:

   a3   :  [a1, a2, a3]  +   {a4, a5, b1, b2, c1}的前二名(由第八场比赛决定)

 b2 a3:  [a1, b1, b2]  +   {a2,a3, b3,b4}的前二名

 b2 c1:  [a1, b1, b2]  +   {a2, b3, b4, c1, max(c2, d1)} 的前二名

 c1 a3:  [a1,a2,a3,b1,c1]  (第七场就可确定前五)

 c1 b2:  [a1,b1,c1]  +    {a2,b2,b3,c2,d1}的前二名

 c1 c2:  [a1,b1,c1,c2]  +  {a2,b2,c3,d1}的第一名

 c1 d1:  [a1,b1,c1,d1]  +  {a2,b2,c2,d2,e1}的第一名

 

因而,最少七场比赛,最多八场比赛就可确定跑得最快的5匹马。

转载于:https://my.oschina.net/yanjianhai/blog/227287

你可能感兴趣的文章
win7安装laravel
查看>>
Oracle 各后台进程功能说明
查看>>
屏蔽storm ui的kill功能
查看>>
我的友情链接
查看>>
Oracle Decode函数的使用
查看>>
MSF学习笔记
查看>>
经典脚本案例--check memory
查看>>
20.31 expect脚本同步文件;20.32 expect脚本指定host和要同步的文件;20.33 构建文件分发系统;20.34...
查看>>
CentOS单用户与救援模式
查看>>
postfix 源码centos7上搭建及错误提示---亲测
查看>>
【Redis篇】Redis集群安装与初始
查看>>
jquery基础
查看>>
C# 集合已修改;可能无法执行枚举操作
查看>>
FSM Code Generator
查看>>
JDBC学习笔记——事务、存储过程以及批量处理
查看>>
JVM内存结构
查看>>
Java 锁
查看>>
7、索引在什么情况下遵循最左前缀的规则?
查看>>
c#中委托与事件
查看>>
mysql数据库备份之主从同步配置
查看>>