面试题:赛马问题(超级清晰详细)

本文通过一个面试题详细分析了如何在没有计时工具的情况下,通过比赛确定64匹马中最快的前4名。经过第一轮8场比赛淘汰后,剩下32匹马;第二轮比赛后,确定16匹马中的前4组;第三轮根据不同情况可能需要1场或2场比赛,最终得出最少需要10次或11次比赛来决出冠军。
摘要由CSDN通过智能技术生成

一、故事背景

事情是这样的:

传说中,一群拥有枯燥生活的人们,来参加一场跑步比赛,当然,不是他们自己跑,他们每个人带着他们的马,一共64个人,带来了64匹马,但是这个比赛方很奇怪,忘记准备秒表等计时工具了,此时比赛方就很焦急啊,急忙找现场的高手帮忙出谋划策,比赛方给出的限制是:“跑道每次只允许8匹马同时比(因为只有8条跑道)”,问怎么决出跑的最快的4匹马?同时,为了把握比赛的时长,还需要知道最多要跑几次才能决出前4名?

二、分析

1、第一轮(8场)

先把64匹马随机分为8组并标记组别,总共比8场,并同时记录每组中各马的名次。直接剔除掉每组的后4匹马(因为每组后4匹马不可能是top4),剩下32匹马待定。

有没有人有疑问,为什么可以直接剔除每组的后4匹马?为什么每组后4匹马不可能是top4?



因为我们的目的就是找出前4名,我们就简单按字面理解,它都在后4位了,肯定直接一把梭,把它们剔除掉就行了。

此时就剩下32匹马待定。

2、第二轮(1场)

现在还是有8组,每组就剩下4匹马,选出每组第1的马比一场,记录结果,按名次记录排序(最强为A1,其次B1C1D1E1…),选出前4组(ABCD

为什么选出前4组?

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值