讨论一个算法,GOOGLE的一个面试题

探讨了在有限赛道条件下,如何通过最少的比赛次数找出最快的一组马匹。提出了具体的解决思路与步骤,并开放讨论更优算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个是google的一个面试题,觉得挺有意思的,问题是这样的:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问[color=red]最少[/color]得比多少场才能知道跑得最快的5匹马。[color=red][也许至少会产生误解,换成最少,就是考虑你的算法的最坏情况下][/color]

以上就是这个问题。其实拿起笔来,仔细看看倒是不是很难。 (后来仔细想了想,其实并不简单)

如果推而广之,有N匹马,有M个赛道,试问要至少多少场比赛才能知道跑得最快的Y匹马。

在优快云上看到另外一个题,[url]http://topic.youkuaiyun.com/u/20081017/14/826303de-1871-4e50-89e8-47ed56f49acc.html[/url]
实际上就是把N换成256, M换成2, Y换成3
-----
另外有个朋友提出的描述方法浅显易懂,反正25匹马要分5组的,大家在下列统一的马匹归类下讨论比较容易

前5轮应该没有什么争议,就是5个队都比一场,暂且这样排名,名字在前面的快些。
A组 A1 A2 A3 A4 A5
B组 B1 B2 B3 B4 B5
C组 C1 C2 C3 C4 C5
D组 D1 D2 D3 D4 D5
E组 E1 E2 E3 E4 E5

第6轮目前比较统一的做法是让 每个组的第一,即A1,B1,C1,D1, E1比一场,假设 A1>B1>C1>D1>E1 那么这个时候可以淘汰一些马了,淘汰的用--表示,如下:
A组 A1 A2 A3 A4 A5
B组 B1 B2 B3 B4 --
C组 C1 C2 C3 -- --
D组 D1 D2 -- -- --
E组 E1 -- -- -- --

分歧就在第7轮了,我也没想清楚最佳方法,我就不在第一个帖子说了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值