算法题:25匹马,找出最快的3匹,最少需要多少次比赛【可代码实现的思考方式】

题目描述:

25匹马,找出最快的3匹,但是只有5个赛道,也就是说每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛?

答案:7

分析:

25匹马我们用25个数字表示,数字越大表示速度越快。

首先,把25匹马分为5个组,赛5场,得出每一组的排名。

现在可以得到一个5*5的矩阵,其中每行都是递减的。

现在每行的四五列,是无效答案,不可能进入前三名。

第6场:把上述5个组的第一名A1 B1 C1 D1 E1 拿出来比较。

根据每组的第一名的名次,我们把行的顺序再排序。

现在我们现在可以得到一个A1>B1>C1>D1>E1的5*5矩阵,并且每行内还是递减的。

现在可以说A1 B1 C1就是答案吗?不可以,因为前三可能在一个组内,如A1 A2 A3

但是可以肯定的是,所以D组和E组是全部淘汰的,不可能进入前三。

因为A1是和所有组的第一比较出来的,所以可以确定A1是最快的。

再进一步思考,C2可能是答案吗? A1>B1>C1>C2,显然C2也不可能进去前三,同理B3 C3也不可能进入前三。

最终,还有A2 A3 B1 B2 C1 五匹马没有确定顺序,再加赛一场,也就是第7场,即可取出前两名,作为所有马中的第二三名。

所以共需要7次比赛。

总结:

在第6场结束之后,我们通过矩阵的特点,排除了很多多余的答案,对求取正确答案非常有帮助。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值