关于赛马的问题,25匹赛出前3名或者前5名

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

分组一:


16111621
27121722
38131823
49141924
5101520
25


分组二:

12345
678910
1112131415
1617181920
21222324
25
我们考虑这两种极端的分组,因为所有的排序问题最怕的就是原先就是有序的,那么就会多花很多白费的功夫,刚好这道题需要我们找有序的,而且是最少的次数,那无疑就是本身是有序的最好找。

第一步:找出NO.1

1.首先,让每个分组的马跑一次,找出每个组最快的;

2.然后将每个组最快的一起跑一次,决胜出NO.1;

在这里我们必须承认,6次决胜出NO.1是唯一解法,所有的8*8匹马8跑道或者是6*6匹马6跑道,都是N+1次决胜出NO.1。


最少解法的情况:

误区:

1.我们本来会认为第二种会是最优,因为刚好第六次赛跑的5匹马就是前五名;

2.但是,我们怎样才能知道这5匹就是前五名呢,毫无疑问我们先要排除出现分组一的情况:就是每个组的第二名有可能比其他组的第一名还要快。

3.那么我们就要让所有组的第二名跑一次,决胜出最快的,然后再拿最快的跟第六次赛跑中的最后一名比,如果刚好最后一名比最快的还快,那么第六次的五匹马就是前5名。

这样的次数是7次

其实这种做法是最保险的,每次都要考虑每个组其他名次中最快的一名,正统的解法也是需要每次去这样解,每次都要去考虑剩余其他名次中最快的一名。


最快解:

1.其实这种东西就像是二维数组,行就是列。

2.我们可以考虑第六次的是前5名,为什么不考虑像分组一的情况,NO.1那一名的分组刚好是前5名?

3.由于我们之前的5次已经知道NO.1那一组的排名,那么我们只要把那一组最后一名用来跟第六次的第二名进行对比,发现它比第二名还快,那就是NO.1那个组都是前5名。

这样的次数是6次


16111621
27121722
38131823
49141924
510152025
16111621
27121722
38131823
49141924
510152025
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值