有36匹马,六个跑道,用最少的次数选出最快的前3匹马

有36匹马,六个跑道,用最少的次数选出最快的前3匹马

问题描述

现有36匹马,6个赛道,没有计时器。现在要在36匹马中选出前三名,请问最少需要多少次比赛?

分析

  1. 根据问题我们可以将36匹马分为6组(如下所示) 这6组每组进行一次比赛。
    在这里插入图片描述
  2. 在每组之中选出前三名(因为最快的3匹马可能被分到同一组中)。如下所示:在这里插入图片描述
  3. 让六组的第一名进行一次比赛,选出前三名所在的组(因为最终的前三名只会出现在这次比赛所在的三组之中),剩下的三组直接淘汰。假如此次比赛的前三名所在组为第一至三组且第一至第三名分别为AH1、BH1及CH1,如下所示:
    在这里插入图片描述
  4. 在上次比赛中第一名为AH1(即最终的第一名),接下来要选出最终的二三名。
    1. 分析第二名可能在哪些马匹中出现:
      首先第二名一定不会出现在第三组(因为CH1最好的名次是第三),也不会是BH2(因为BH1最好的名次是第二或第三名),也不会是AH3(因为AH3没有AH2快,最好的名次也就是第三),所以第二名可能从AH2和BH1中产生
    2. 分析第三名可能在哪些马匹中出现:
      在分析第二名时可以得出第三名可能在CH1、BH1、BH2及AH3
  5. 所以最终要在第一组的三名、第二组的前两名、第三组的第一名(总共六匹马)中选择出最终的前三名

结论

总共需要8(6+1+1)次


关注「CoderPro」公众号,专注于分享.NET/C++知识及算法的大本营,新手公众号请大家多多关照/(ㄒoㄒ)/~~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值