25匹马,5个跑道,每次只能5匹马跑,问最少几次得到跑的最快的3匹马_独步秋风的博客-程序员宅基地

技术标签: 逻辑题整理  


正确答案: 7 场。


推理过程:


你可以先询问面试官,「最快」的意思,是不是指比赛时总能赢?在真实情况下并非如此。但倘若你假设, A 在比赛中跑赢了 B , A 就无可争议地跑得更快,这就极大地简化了这道谜题。


面试官会告诉你,这么想没有问题,比赛就是为了选出跑得最快的马。通常,你会下意识地想,至少需要 5 场比赛。任何一匹马都可能排名前三,所以,你必须让所有的 25 匹马都参加比赛。可每次只让 5 匹马参赛,少于 5 场比赛没法让所有的马都参赛。


很好。接下来你的结论会是:只有 5 场比赛还不够。第一轮,把 25 匹马分为 5 组,每组里的马只跑一次,只跟同组的马匹竞争。一轮比赛结果大概会是这样:


第一名:「奔腾」

第二名:「北舞」

第三名:「凯速」

第四名:「上将」

第五名:「跳影」


你无法断定「奔腾」是 25 匹马里跑得最快的,甚至无法担保它能排进前三名。举个极端情况下的相反例子:其他 4 场比赛中跑得最慢的马,也可能比「奔腾」跑得快,因为它的速度可能在 25 匹马里排第 21 名。


那么,从这场比赛里我们是否了解到什么东西呢?当然了。我们了解到这 5 匹马的排名情况。我们还了解到,「上将」和「跳影」可以排除在外了。既然它们在这一轮比赛里排不进前三,那么在所有的 25 匹马里,它们同样不可能排进前三。。这个道理,也适用于其他轮比赛里的第 4 名和第 5 名。每一轮比赛可以排除掉两匹马。在第一轮的 5 场比赛中,我们可以刷掉 10 匹马,留下 15 匹马竞争前三名。


第二轮,即第 6 场比赛,要测试在最初 5 场比赛中表现出色者。合理的方案是让 5 匹上一轮比赛的「第一名」对战。就这么做吧!让「奔腾」和其他 4 场比赛的第一名跑一回。结果可能会是这样:


第一名:「易歌尔」

第二名:「奔腾」

第三名:「终结者」

第四名:「红朗姆」

第五名:「菲尔拉普」


这一次,我们又可以排除两匹马,「红朗姆」和「菲尔拉普」。从这一次的比赛结果看,它们不可能是 25 匹马里的前三名。我们还了解到,「易歌尔」是所有马里跑得最快的!如果问题问的只是 25 匹马里跑得最快的是谁,那么答案就是「易歌尔」。


可我们要的是前三名。我们不光可以排除掉「红朗姆」和「菲尔拉普」,还可以排除掉第一轮比赛中所有败给它们的马。败给它们的马跑得更慢,而我们又已经知道「红朗姆」和「菲尔拉普」进不了前三了。


接下来是「奔腾」。从这场最新的比赛结果来看,它有可能是所有马里跑得第二快的。但以下可能性仍然存在:第一场比赛排在「奔腾」之后的「北舞」,是所有马里跑得第三快的。那么,最终排名就是「易歌尔」、「奔腾」和「北舞」。第一场比赛中排第三的「凯速」,现在出局了。

「易歌儿」第一次比赛时排在它后头的第二名和第三名,仍在候选之列。这两匹马的速度完全有可能比「奔腾」快,因为它们并没有比试过。


总之,现在候选名单里还有 6 匹马。它们是:本场比赛的前三名;与本场比赛第一名在第一场比赛中获第二、第三名的两匹马;在第一场比赛中仅次于本场比赛第二名的一匹马。


我们已经知道「易歌儿」是跑得最快的马,因此,让它参赛没有任何意义了,于是就只剩下 5 匹马。自然,第三轮,我们会让这 5 匹马进行第 7 场,也是最后一场比赛。第 7 场比赛的前两匹马就是所有 25 匹马中跑得第二快和第三快的。


总结一下:先进行 5 场资格赛;之后让资格赛的第一名们进行冠军争夺赛,本场比赛的获胜者就是所有马里速度最快的;再对逻辑上仍有资格的 5 匹马进行最后一场比赛。这次比赛里的前两名,就是 25 匹马里跑第二和第三快的。


作者:宅狼
链接:https://www.zhihu.com/question/19856916/answer/40998875
来源:知乎
著作权归作者所有,转载请联系作者获得授权。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33326449/article/details/53040809

智能推荐

SpringCloud项目Docker化后的跨主机调用-程序员宅基地

文章目录当我们在同一台宿主机上部署SpringCloud服务的时候,因为是同一个主机,docker容器之间使用ip+port是可以直接访问的但是当这些微服务部署到不同宿主机的时候,就不能访问了,因为这些服务部署绑定在同一张网卡上。那么怎么做呢?1、服务暴露端口2、微服务注册到注册中心的时候使用宿主机的ipeureka.instance.prefer-ip-address=true# ...

网络编程基础---UDP-程序员宅基地

上一篇博客主要是为了这一部分服务的,最近学到网络编程部分 刚好计算机网络也讲到ip地址 也就恶补了一些IP传输的知识。现在正式来总结一下UDP和TCP两大传输协议吧网络通讯的协议:udp通讯协议tcp通讯协议。网络通讯的三要素: 1. IP...

[sklearn]三种方式实现PolynomialSVC-程序员宅基地

本文主要参考了两个博客,首先,我参考了https://blog.csdn.net/lanchunhui/article/details/50521648当中对sklearn中pipeline机制的讲解,具体如图1其次,我的代码部分主要参考了https://blog.csdn.net/weixin_39881922/article/details/80251055当中绝大部分的代码及思想,我的贡..._polynomialsvc

C++的The Big Three and A Half 是什么-程序员宅基地

你可能知道C++里面的这个梗,但是并不知道英文叫这个。。。

pxe无人值守安装操作系统_windows pxe 安装系统-程序员宅基地

实验环境网关 classroom 172.25.8.254workstation 172.25.8.9server a-jeth0 172.25.8.10-外网eth1 192.168.0.x内网eth2 192.168.1.x备用--------------------------------------------需求:自动化运维设计:让服务器通过网络自动的_windows pxe 安装系统

Hadoop-2.4.1学习之如何确定Mapper数量-程序员宅基地

MapReduce框架的优势是可以在集群中并行运行mapper和reducer任务,那如何确定mapper和reducer的数量呢,或者说如何以编程的方式控制作业启动的mapper和reducer数量呢?在《Hadoop-2.4.1学习之Mapper和Reducer》中曾经提及建议reducer的数量为(0.95~1.75 ) * 节点数量 * 每个节点上最大的容器数,并可使用方法Job.setNu

随便推点

LeetCode:219(Python)—— 存在重复元素 II(简单)_判断数组中是否存在两个不同的索引_娱乐不打烊丶的博客-程序员宅基地

概述:给你一个整数数组nums 和一个整数k ,判断数组中是否存在两个 不同的索引i和j ,满足 nums[i] == nums[j] 且 abs(i - j) _判断数组中是否存在两个不同的索引

nodejs之npm的使用、nvm_nodejs npm nvm-程序员宅基地

NVM的使用参考:https://www.jianshu.com/p/622ad36ee020nvm:nodejs 版本管理工具。也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本。nodejs:在项目开发时的所需要的代码库npm:nodejs 包管理工具。在安装的 nodejs 的时候,npm 也会跟着一起安装,它是包管理工具。npm 管理 nodejs 中的第..._nodejs npm nvm

CentOS 8安装postgresql 13_centos8安装pgsql13_witleo灬的博客-程序员宅基地

安装postgresql登陆网址:https://www.postgresql.org/download/linux/redhat/选择postgresql版本和操作系统平台等信息,直接复制命令,依次执行# Install the repository RPM:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rp_centos8安装pgsql13

GSM通话流程-程序员宅基地

GSM通话流程https://wenku.baidu.com/view/79cd8ae59b89680203d82552.htmlhttps://wenku.baidu.com/view/84d99f34ee06eff9aef80726.html?sxts=1585734030360https://wenku.baidu.com/view/56555403eff9aef8941e0662.h..._gsm通话流程

w ndows摄像头驱动怎么安,如何安装摄像头驱动?求安装步骤和方法!!!_甜品专家的博客-程序员宅基地

如果您在台式机的便携式计算机和/或网络摄像头设备中具有内置摄像头,并且在Windows PC /笔记本电脑中寻找“摄像头驱动程序”,那么您来对地方了。在这里,我们正在详细讨论“ 如何下载和安装Windows Camera Driver ”,并提供了简单的步骤。什么是Windows相机驱动程序?网络摄像头或相机驱动程序是将相机设备与所使用的操作系统进行通信所需的软件程序。换句话说,我们可以说相机驱动..._hd webcam驱动怎么安装

zabbix3.0的邮件报警详细配置+交换机流量监控报警-程序员宅基地

1.下载软件wgethttp://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz2.创建目录mkdir/usr/local/bin3.解压软件tarzxfsendEmail-v1.56.tar.gz-C/usr/src4.进入目录cd/usr/src/sendEmail-v1....