赛马问题 25匹马选出最快的5匹
赛马问题 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匹相关推荐
- 8赛道,64匹马找最快的8匹马
https://blog.csdn.net/qq_43648751/article/details/103134357
- 25匹马5个跑道,选出最快的5匹马?
回顾之前问题:25匹马5个跑道,怎样选出最快的3匹? 答:先分成5组比赛并组内排序(从1到5速度减慢),再让每组第一名比赛,按照每组第一名的比赛结果从快到慢对每组排序(从A到E速度减慢),此时共计比赛 ...
- 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹
昨天,有网友私信我,说去阿里面试,彻底的被打击到了.问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题.无独有偶,今天笔 ...
- 腾讯面试题:64匹马,8个跑道,选出最快的四匹马
题目描述 64匹马,8个跑道,需要赛多少场,选出最快的四匹马? 题目分析 题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是: 1.不能计时: 2.在最坏的情况下,至少多少轮比赛,必然能选择出 ...
- 智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马
智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马 1.将马分成六组进行比赛,比赛六次,六组马分别都是有序的. 2.分别将六组马中跑得最快的马挑出来,让这六匹马再进行第七次比赛,将 ...
- 算法:从25匹马中选出最快的三匹马
本题来源于面试中的一道题. 题目:给你25匹马,你有个赛道每次最多同时跑5匹马,没有表和计数器之类的东西,请问至少跑几次可以找出最快的三匹马? 思路:首先将这25匹马随机分成1,2,3,4,5共5组, ...
- 赛马-25匹马选出前三名问题
题目: 25匹马,速度都不同,但每匹马的速度都是定值.现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢.问最少赛几场可以找出25匹马中速度最快的前3名? 答案: 25匹马分成5组,先 ...
- 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。...
答案是7次. 1. 首先将25匹马分成5组a.b.c.d.e进行比赛.比赛的次数就是5次.得到每组的第一名,分别编号a1,b1,c1,d1,e1. 2. 然后我们将每组的第一名进行比赛,得出结果.假设 ...
- 64匹马8个跑道需要多少轮才能选出最快的四匹
分成两种场景: 计时的场景:8场,不用解释,根据计时排名 无计时的场景:最少10场,最多11场 思路: 1.分8组决出8组前四名,共跑8次,每个小组剩下四人:(已跑8场) 2.把八个小组里面的第一名选 ...
- 64匹马8个跑道选出最快的4匹马,最快需要几次比赛
既然问这个问题,肯定是不计时赛马. 1.64匹马分8组,每组竞赛,这样每组内的马有了排序. (+8) 2.选每组的第一名出来竞赛,前四名的组去掉后四匹马,后四名的组全去掉,于是剩下前四名的组,每组4匹 ...
最新文章
- Linux memcached 安装
- 如何修剪字符串中的空格?
- 工作中常用的第三放的框架
- uploadify 附件上传
- ABAP实践学习--灰色的ALV显示
- 关于MULE ESB相关的介绍
- 重磅!吴恩达家的NLP课程发布啦!
- bilibili里的硬币有什么用 硬币的作用详细介绍
- Spring常用注解 - 使用注解来构造IoC容器
- 【hadoop】Hadoop Output directory file output already exists
- php简单的登录界面,PHP实现简单用户登录界面
- PostgreSQL 性能优化方法 - 1
- div+css完成首页布局
- Redis的持久化机制:RDB和AOF
- 视频倍速插件(火狐,谷歌)
- Exception:No serializer found for class and no properties discovered to create BeanSerializer
- qq游戏大厅中解析不安装apk的研究
- 使用组策略为域用户配置IE使用代理服务器
- PIXI.JS一镜到底动画
- STM32学习笔记---OLED页寻址方式