64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)

首先,可以将马分为8组,每组各跑一次,然后淘汰掉后四名,这里淘汰后四名是因为只需要跑的最快的四匹马。

64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)_第1张图片

然后取8次跑的第一名进行比赛,然后淘汰掉后四名所在的组的所有马,因为,后四名所在的组的第一名没有跑过前四名的马,所以可以直接淘汰。

64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)_第2张图片

这时候还剩下16匹马,此时黄色部分是剩余的马,在这里其实可以继续淘汰,因为D1是第九次的第四名,但D1又是它3所在组的第一名,那么对应的D2,D3,D4都可以继续淘汰掉。但是第四名也可能出现在C2中,C2是所在组的第二名,那么C3,C4也可以淘汰了,根据这样进行分析,可以得到B4也可以淘汰了。最后剩余的马如下图:

64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)_第3张图片

最后剩余的就是去掉上一步淘汰的马。总数为10匹,其实这时候最快的一批已经出来了,那么就将剩余的9匹马,选择一匹,剩余的8匹,重新跑一下选择最快的3匹。

然后将跑出来的3匹马和刚没有跑的1匹,默认最快的一匹,再跑一场,最后最快的4匹也就出来了。最少要使用11场比赛。

你可能感兴趣的:(机器学习,数据结构与算法)