赛马问题 25匹马 5个赛道 选最快5匹马

  • 赛马问题
    • 一·问题描述
    • 二·解题思路
      • 1. 顺序选第一
      • 2. Top3是C1
      • 3. Top3不是C1
    • 三·解题过程
      • 1.预筛选(6次)
      • 2.排除无效的马
      • 3.选出Top2和Top3(1次)
      • 4.C1出现的位置
        • 1.C1是Top3(1次)
        • 2.C1不是Top3(2次)
      • 5.特殊情况
    • 总结

赛马问题

一·问题描述

面试常见问题,现有25匹马,5条赛道,没有计时器的情况下,如何选出最快的5匹马
难点 :三匹马在筛选出第一名之后,需要比较的马不多。但如果要选出前5匹马,在选出第一名之后,经过筛选,留下的马还是很多,这个时候很多人就会因为不知道如何分组而手忙脚乱。

A组 B组 C组 D组 E组
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

二·解题思路

1. 顺序选第一

分组选出5组,每组5匹马。每组分别比赛,然后组间第一再比赛。通过筛选之后再分组,选出Top2和Top3。下面分为Top3是C1和不是C1两种情况。

2. Top3是C1

将C1之后的进行比较决出Top4和Top5

3. Top3不是C1

先选出Top4,在选出Top5

三·解题过程

1.预筛选(6次)

25匹马分成5组,每组5匹马。每组分别比赛,然后每组第一再比赛。其中N1>N2>N3>N4>N5。组内有序,组间第一有序。

A组 B组 C组 D组 E组
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

2.排除无效的马

因为要选出前5匹马。同时第一轮筛选得出关系A>B>C>D>E。所以E组可以排除E2,E3,E4和E5四匹马。
例如:E2要进Top5,先决条件是E1至少进入Top4,但是比E1快的有A1,B1,C1和D1四匹马。所以E1无法进入Top4,因此E2无法进入Top5。
同理排除以下红色的马

A组 B组 C组 D组 E组
Top1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
A4 B4 C4 D4 E4
A5 B5 C5 D5 E5

剩余如下

A组 B组 C组 D组 E组
Top1 B1 C1 D1 E1
A2 B2 C2 D2
A3 B3 C3
A4 B4
A5

3.选出Top2和Top3(1次)

A组 B组 C组 D组 E组
Top1 B1 C1 D1 E1
A2 B2 C2 D2
A3 B3 C3
A4 B4
A5

表中存在快慢关系如下
A1>A2>A2
A1>B1>B2
A1>B1>C1
所以Top2和Top3只可能出现的A2,A3,B1,B2和C1这5匹马中(表中标红)。将这5匹马作为一组进行比赛可以选出Top2和Top3

4.C1出现的位置

现在我们关注C1出现的位置。因为存在快慢关系A1>B1>C1,所以C1出现的位置只有两种情况。C1要么是Top3(B1为top2),要么C1不是Top3

1.C1是Top3(1次)

A组 B组 C组 D组 E组
Top1 Top2 Top3 D1 E1
A2 B2 C2 D2
A3 B3 C3
A4 B4
A5

当C1是Top3时,存在快慢关系如下
C1>C2>C3
C1>D1>E1
D1>D2
基于以上关系,Top4和Top5只会出现在C2,C3,D1,D2和E1中(表中标红)。将这5匹马作为一组比赛可以决出Top4和Top5。

2.C1不是Top3(2次)

排除Top1,Top2和Top3之后将每组第一作为一组进行比赛,选出Top4之后,将Top4所在组的下一匹马加入进组再比一次选出Top5。
举例:假如选出的Top2是B1,Top3是A2
那么Top4所在的组就是A3,B2,C1,D1和E1(表中标红)

A组 B组 C组 D组 E组
Top1 Top2 C1 D1 E1
Top3 B2 C2 D2
A3 B3 C3
A4 B4
A5

假如选出的Top4是C1,那么Top5所在的组就是A3,B2,C2,D1和E1(表中标红)

A组 B组 C组 D组 E组
Top1 Top2 Top4 D1 E1
Top3 B2 C2 D2
A3 B3 C3
A4 B4
A5

5.特殊情况

当经过预筛选和排除无效的马,我们可以得到ABCDE这5组中最快的马是A1,同理BCDE这4组中最快的马是B1。那么可以比较A组中其余的马和B1,即比较A2,A3,A4,A5和B1。如果此时得到的结果恰好是B1最慢,即A2>A3>A4>A5>B1。那么最快的5匹马就是A组的5匹马,因为A组中所有马都比BCDE四组中最快的马快,所有A组的马比其余四组所有的马都快。此时,最快的5匹马顺序为A1,A2,A3,A4和A5。
PS:这种方法是最快的,只需要7次。但值得注意的是,这是一种特殊情况,不具有解题思路的代表性。

总结

在本次的赛马问题中,共有25匹马,5条赛道,要求选出最快的5匹马。加上特殊情况,需要的总次数在7次到9次之间。

赛马问题 25匹马选出最快的5匹相关推荐

  1. 8赛道,64匹马找最快的8匹马

    https://blog.csdn.net/qq_43648751/article/details/103134357

  2. 25匹马5个跑道,选出最快的5匹马?

    回顾之前问题:25匹马5个跑道,怎样选出最快的3匹? 答:先分成5组比赛并组内排序(从1到5速度减慢),再让每组第一名比赛,按照每组第一名的比赛结果从快到慢对每组排序(从A到E速度减慢),此时共计比赛 ...

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

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

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

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

  5. 智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马

    智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马 1.将马分成六组进行比赛,比赛六次,六组马分别都是有序的. 2.分别将六组马中跑得最快的马挑出来,让这六匹马再进行第七次比赛,将 ...

  6. 算法:从25匹马中选出最快的三匹马

    本题来源于面试中的一道题. 题目:给你25匹马,你有个赛道每次最多同时跑5匹马,没有表和计数器之类的东西,请问至少跑几次可以找出最快的三匹马? 思路:首先将这25匹马随机分成1,2,3,4,5共5组, ...

  7. 赛马-25匹马选出前三名问题

    题目: 25匹马,速度都不同,但每匹马的速度都是定值.现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢.问最少赛几场可以找出25匹马中速度最快的前3名? 答案: 25匹马分成5组,先 ...

  8. 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。...

    答案是7次. 1. 首先将25匹马分成5组a.b.c.d.e进行比赛.比赛的次数就是5次.得到每组的第一名,分别编号a1,b1,c1,d1,e1. 2. 然后我们将每组的第一名进行比赛,得出结果.假设 ...

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

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

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

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

最新文章

  1. Linux memcached 安装
  2. 如何修剪字符串中的空格?
  3. 工作中常用的第三放的框架
  4. uploadify 附件上传
  5. ABAP实践学习--灰色的ALV显示
  6. 关于MULE ESB相关的介绍
  7. 重磅!吴恩达家的NLP课程发布啦!
  8. bilibili里的硬币有什么用 硬币的作用详细介绍
  9. Spring常用注解 - 使用注解来构造IoC容器
  10. 【hadoop】Hadoop Output directory file output already exists
  11. php简单的登录界面,PHP实现简单用户登录界面
  12. PostgreSQL 性能优化方法 - 1
  13. div+css完成首页布局
  14. Redis的持久化机制:RDB和AOF
  15. 视频倍速插件(火狐,谷歌)
  16. Exception:No serializer found for class and no properties discovered to create BeanSerializer
  17. qq游戏大厅中解析不安装apk的研究
  18. 使用组策略为域用户配置IE使用代理服务器
  19. PIXI.JS一镜到底动画
  20. STM32学习笔记---OLED页寻址方式

热门文章

  1. python死循环_怎么避免Python程序出现死循环(无限循环)?
  2. 语音增强算法研究系列笔记 - 语音噪声分类及特点
  3. python爬虫爬取百度图片
  4. 4位先行进位加法器_第4章 C语言基础以及流水灯的实现
  5. csv交换到excel
  6. exchange协议发送邮件
  7. 最详细的IIS发布站点步骤
  8. mysql workbench免安装_mysql 压缩包免安装版 安转步骤
  9. threejs学习之透视相机与正交相机
  10. ubuntu下使用笔记本摄像头