BAT 面试题:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?
写在前面:最近在刷面试题的过程中遇到这么一道题,感觉解读题目的角度很多,这里介绍自己的做法。注意:本文并不是参考答案,只是为大家在面试的时候多提供一条思路,或许可以获得面试官的青睐。
25匹马,5个跑道,每个跑道最多能有 1 匹马进行比赛,最少比多少次能比出前 3 名?前 5名?
1 - 一些假设
同一马匹在任意场次的速度都能保持一致。
2 - 前 3 名分析
将 25 匹马分为 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 取每个小组的第一名跑一场,假设决出的顺序为
A1 > B1 > C1 > D1 > E1
,则 A1 是第一名,剔除掉没有希望进入前 3 的马匹后,排序表变为:组A 组B 组C 组D 组E - B1 C1 - - A2 B2 - - - A3 - - - - - - - - - - - - - - 容易发现,刚好只剩下 5 匹马,可以在一场比赛跑完。
结果就是 5 + 1 + 1 = 7 场。
3 - 前 5 名分析
和前 3 名的分析类似,分成 5 个小组,5 个小组的第一名再跑一场,决出第一名后剔除没有机会进入前 5 的马匹,排序表如下:
组A 组B 组C 组D 组E - B1
C1 D1 E1 A2 B2 C2 D2 - A3 B3 C3 - - A4 B4 - - - A5 - - - - 注意到 B1 是 BCDE 四组中最快的马,但是 B1 和 A 组剩下的马的快慢暂不得知。B1 与 A 组马的顺序将会直接影响接下来需要跑的场次。
让 A 组剩下的 4 匹马和 B1 跑一场,则可能出现如下结果:
结果 1 结果 2 结果 3 结果 4 结果 5 A2 A2 A2 A2 B1
A3 A3 A3 B1
A2 A4 A4 B1
A3 A3 A5 B1
A4 A4 A4 B1
A5 A5 A5 A5 容易发现,由于 B1 的特殊性,结果 1 和结果 2 其实已经决出了前 5 的马匹(包括 A1),结果 3 决出了前 4 的马匹,结果 4 决出了前 3 的马匹,结果 5 决出了前 2 的马匹。
所以最少需要 5 + 1 + 1 = 7 场。(题目到这里就可以结束了)
结果 1 和结果 2 具有偶然性,出现其他结果时的情况比较复杂,但是考虑到每场都会至少确定 1 个名次,那么实际上最多 5 + 5 =10 场就能确定前 5 。
4 - 拓展
64匹马,8条跑道,决出前4名?
- 分 8 组,决出第一名之后剔除不能进入前 4 的马匹,如下:
组A 组B 组C 组D 组E … - B1 C1 D1 - - A2 B2 C2 - - - A3 B3 - - - - A4 - - - - - 还剩 9 匹马,一次跑不完。
- 笔者的考虑是第 10 场先不安排A4、B3、C2、D1中的某一匹,因为这 4 匹马相对较慢,很大几率不会入选前 4,根据结果来确认是否需要第 11 场。比如,第 10 场 D1 没有上场,如果(速度比 D1 快的)B1 或者 C1 不在前 3,那么 D1 就没有再上场的必要了。反之,若 B1、C1分别是第 2 、第 3 名,那么 D1 还是有机会争一争第 4 的。
- 所以按这个思路,最多 11 场,最少 10 场就能确认前 4。
再次强调:本文不是标准答案,请勿擅自曲解笔者意思。最后,祝大家面试顺利~
正文结束,欢迎留言讨论。
BAT 面试题:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?相关推荐
- 面试题:25匹马最快3匹及扩展
描述: 在25匹马里,只有五条赛道,在没有计时工具的情况下,选最快的三匹? (只能得出相对快慢) 两个扩展: 最快5匹呢, 有30匹马呢 1. 基本思路(找最快3匹马) 先确定第一名(用6场): 分 ...
- 25匹马,5个跑道,最少比几次可以得出跑得最快的前三匹吗?
算法思路: 首先将25匹马分成5个小组,分别为A, B, C, D, E,比赛次数5次: 每个小组都分别进行比赛,分别得到前两名,分别为A1,A2, B1, B2, C1, C2, D1, D2, E ...
- 腾讯面试题:64匹马,8个跑道,选出最快的四匹马
题目描述 64匹马,8个跑道,需要赛多少场,选出最快的四匹马? 题目分析 题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是: 1.不能计时: 2.在最坏的情况下,至少多少轮比赛,必然能选择出 ...
- 25匹马5个跑道,选出最快的5匹马?
回顾之前问题:25匹马5个跑道,怎样选出最快的3匹? 答:先分成5组比赛并组内排序(从1到5速度减慢),再让每组第一名比赛,按照每组第一名的比赛结果从快到慢对每组排序(从A到E速度减慢),此时共计比赛 ...
- BAT面试题9:谈谈判别式模型和生成式模型?
BAT面试题9:谈谈判别式模型和生成式模型? https://mp.weixin.qq.com/s/X7zWJCMN7gbCwqskIIpLcw 判别方法:由数据直接学习决策函数 Y = f(X),或 ...
- BAT面试题13:请简要说说一个完整机器学习项目的流程
BAT面试题13:请简要说说一个完整机器学习项目的流程 https://mp.weixin.qq.com/s/HiqC1MCb5TEBUxjiYvB7bA 摘要:本文描述机器学习任务的"OO ...
- 面试题25: 合并两个排序的链表
/******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...
- java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大。
java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大. A:正确 B:错误 蒙蔽树上蒙蔽果,蒙蔽树下你和我 拿到这道题,我觉得说的贼有道理,注释太多,尺寸变大.无疑与就和驾考 一样, ...
- java 大流量高并发_【BAT面试题】如何应对大流量、高并发??
这是一道BAT大厂的面试题 所谓高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈. 常用的高并发处理的思路与手段 从服务端视角看高并发 ...
最新文章
- python 自动化微信小程序_appium+python自动化56-微信小程序自动化(摩拜为例)
- Python使用request包请求网页乱码解决方法
- System.Net.WebException: The operation has timed out at System.Net.HttpWebRequest.GetResponse()
- vlc android 移植版编译
- nginx服务器,访问时显示目录,不直接显示index.php
- 设计类超实用的导航网站,一网包含1000+个行业内热门资讯灵感源!
- python实时数据存储与显示_利用python进行数据加载和存储
- Bash脚本和/ bin / bash ^ M:错误的解释器:没有这样的文件或目录[重复]
- 2022年信息安全工程师考试大纲
- 【zigbee无线通信模块步步详解】ZigBee3.0模块建立远程网络控制方法
- 安防经济逐渐景气下行 安企是否能排除万难冲出阴霾?
- 您全面了解“含胸拔背”吗?
- 驾校考试科目二完整流程
- java计算机毕业设计ssm+vue心理咨询网站
- 360安全浏览器如何锁定极速模式
- 2019年5月25更新——“运动世界校园”软件破解
- DAY5 C高级笔记
- 双 JK 触发器 74LS112 逻辑功能。真值表_【第十章】触发器和事件
- Go:pythagoras毕达哥拉斯算法(附完整源码)
- 解决无法找到winRAR.exe
热门文章
- [Eclipse]GEF入门系列(二、GEF概述)
- arduino智能浇花系统_基于Arduino单片机的智能浇花器
- 【iOS 1 行代码系列】之 一行代码搞定TableView组头悬停
- 【思维进阶】《高效能人士的七个工作习惯》读书笔记
- storyboard(故事版)新手教程 图文详解 4.把约束拉成属性 在代码文件里进行修改
- 小米基于OpenStack搭建私有云平台技术架构大揭秘!
- 英特尔芯片漏洞比想象中更严重:控制计算机无需密码
- re匹配截至到第一个中文_Python中的正则表达式(re模块)!非常重要!
- 9月20日科技联播:美团今日上市估值超小米京东;阿里巴巴获杭州第一张自动驾驶牌照...
- 信息安全CIA三要素