64匹马,8个跑道,假设马发挥稳定且没有体力问题,需要多少场可以决出所有名次(前4名/前8名)?

方法一:归并方法,49场

1). 把64匹马分成8组,先把每组排个序,共8场比赛。

2). 把这8组8匹马两两合并为4组16匹马的有序组,每次合并需要3场比赛。总共需要4次合并,总共需要赛 12 场;

  • 这里就是本题的关键所在:从其中任意选出两组,合并后的前4名肯定在两组的前4名这8匹马里,这8匹比一场就把两组的前4比出来了;对剩下的12马采取同样的策略,各取前4名,然后通过一场比赛决出整合后序列的5-8名,最后还剩8匹马,再为这8匹赛一次,这就是最后8名了。

3). 把4组16匹马再两两合并为2组32匹马,每次合并需要7场比赛。总共需要2次合并,总共需要赛 14 场。

  • 方法同上,实际上可以证明,两组有序的8k匹马合并成一组16k匹马,需要16k/4-1 =
    4k-1场比赛。(之前每场比赛决出靠前的4名,最后一场比赛一次决出最后的8名)

4). 把2组合并成1组,需要15场比赛。

这样的话,一共就是 8+4*3+2*7+1*15=49场比赛。

方法二:另一牛逼解答,37场。

先随意将马排成8*8阵型:

               01   02   03   04   05   06   07   0809   10   11   12   13   14   15   1617   18   19   20   21   22   23   2425   26   27   28   29   30   31   3233   34   35   36   37   38   39   4041   42   43   44   45   46   47   4849   50   51   52   53   54   55   5657   58   59   60   61   62   63   64

1、每一行赛一场,共八场。由对称性,不妨设每一行都是从左到右速度依次减慢。即01,09,17,25,33,41,49,57是八场的冠军。

2、下面说明,之后每4场总可以决出8个名次。

(1)各组冠军赛一场,(2)各组垫底赛一场,共两场,决出了第一名、第六十四名。且不妨设第一列各马速度由上至下依次变慢。即01是总冠军。
(3)现在,总第二名有两匹马候选,02,09。让02,09,10,17四匹马参与第三场。第三场另四匹呢?它们是有类似情况的最慢的几匹马。例如如果64是最慢的,第八列由快到慢依次是08,16,24,32,40,48,56,64,那么,让56,63,55,48四匹马参与第三场。由第三场的结果,总可以知道总第二、第六十三名。

  • 下面说明,不管02,09,10,17赛得的结果如何,总第三、四名的候选马不会超过四匹。

  • 若02获胜,那么总第三、四名的候选马只有03,04,09,以及10和17两匹中较快的一匹(这两匹已经赛过)

  • 若09获胜,那么第三名实际上已经知道了,是02、10或17中较快的一匹。若是02,则第四名候选马是03,10,17。若是10,则第四名候选马是02,11,17。若是17,则第四名候选马是02,10,18,25。

  • 于是,总第三、四名的候选马不会超过四匹。同理,总第六十二、六十一名的候选马也不会超过四匹。

(4)将上述总第三、四名的候选马、总第六十二、六十一名的候选马至多不超过八匹,赛一场,于是至此已经决出了前四名后四名共八个名次。

  • 不断重复上述过程,直至7个4场后决出了56个名次。

3、最后还剩8个名次,用一场解决。

总计:8+4*7+1=37场。

64匹马8个跑道问题相关推荐

  1. 64匹马8个跑道需要多少轮才能挑选出最快的4匹马?

    64匹马8个跑道需要多少轮才能挑选出最快的四匹马? 第一步 把64匹马分成8组,每组各比赛一次,按照快慢进行排序,出现以下结果: 第二步 淘汰每一组的最后四匹,因为只需要跑的最快的四匹,即使出现一个组 ...

  2. 智力题:64匹马8个跑道,至少需要多少轮才能挑选出最快的4匹马

    题意: 64匹马8个跑道需要多少轮才能挑选出最快的四匹马? 解法: 1.分成八组,每组8匹马. 2.八组内部分别比赛,总共比八场,对每组的马排序. 每组的后四匹显然不是答案,直接淘汰. 现在只剩下八组 ...

  3. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹

    昨天,有网友私信我,说去阿里面试,彻底的被打击到了.问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题.无独有偶,今天笔 ...

  4. 【字节跳动面试题】赛马问题 64匹马8个跑道最少几次赛出最快的4匹马

    2020年1月 字节跳动研发岗实习面试题 文章目录 赛马问题 一. 64匹马8个跑道 二. 36匹马6赛道 赛马问题 一. 64匹马8个跑道 64匹马8个跑道(不计时),问最少要比多少次,才能知道最快 ...

  5. 64匹马8条跑道找最快的4匹马

    假设跑道一样,马体力无限,速度均衡.有64匹马只有8条跑道,找最快的4匹马,至少要跑多少次? 答案:10-11次. 这类题,都是根据已知条件用尽量少的成本推导出尽量多的已知条件来进行最尽筛选 1.分8 ...

  6. 64匹马8个跑道需要多少轮才能选出最快的四匹

    分成两种场景: 计时的场景:8场,不用解释,根据计时排名 无计时的场景:最少10场,最多11场 思路: 1.分8组决出8组前四名,共跑8次,每个小组剩下四人:(已跑8场) 2.把八个小组里面的第一名选 ...

  7. 64匹马8个跑道选出最快的4匹马,最快需要几次比赛

    既然问这个问题,肯定是不计时赛马. 1.64匹马分8组,每组竞赛,这样每组内的马有了排序. (+8) 2.选每组的第一名出来竞赛,前四名的组去掉后四匹马,后四名的组全去掉,于是剩下前四名的组,每组4匹 ...

  8. 腾讯面试题:64匹马,8个跑道,选出最快的四匹马

    题目描述 64匹马,8个跑道,需要赛多少场,选出最快的四匹马? 题目分析 题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是: 1.不能计时: 2.在最坏的情况下,至少多少轮比赛,必然能选择出 ...

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

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

最新文章

  1. ASP.NET中用healthMonitor属性用
  2. [java]窗口的创建
  3. .NET架构与模式探索
  4. 九九乘法表用python怎么写_用python做个九九乘法表
  5. 有向图的拓扑排序的理解和简单实现(Java)
  6. one thread one loop 思想
  7. 第一周例行报告及作业汇总
  8. 【MATLAB】图像分割
  9. 国家央行数字货币的优势与挑战
  10. 基于SSM的志愿者管理系统
  11. 攻击局域网计算机,局域网攻击,网络攻击知识之几种IP地址攻击方式
  12. 机械设计自动化行业现在吃香吗?有前途吗?
  13. Linux网络常用命令
  14. linux 分区数据恢复
  15. 【计算理论】图灵机 ( 图灵机示例 )
  16. 群英传android,三国群英传官方网站-腾讯游戏-三国SLG手游新王者
  17. 简历上敢写自己熟练运用Spring,那这些问题你清楚嘛?
  18. P5831 [USACO19DEC]Cow Gymnastics奶牛体操
  19. egret 实现图片一次闪光效果
  20. Heroes 综合能力TOP-TEN

热门文章

  1. 字节流之文件输入流FileInputStream(上)
  2. QDUOJ 点击此处签到(并查集)
  3. [Luogu P3571] [BZOJ 3835] [POI2014]SUP-Supercomputer
  4. 2021-09-18P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布P2058 [NOIP2016 普及组] 海港
  5. UCC27201DDAR
  6. 总结kali中文输入法失败的原因
  7. sim808模块收发送短信
  8. 华为服务器1u系列,服务器 1u 尺寸
  9. rd如何撰写总体设计文档和详细设计文档
  10. 视频只有声音没有图像?(收藏)