阿里巴巴面试算法题目:25匹赛马,5个跑道,也就是说每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马

考虑最坏的情况,那么有一个比赛9次的可行解:
25匹马分5组,每组比一次。
然后5个组的冠军再比一次。
共进行了6次比赛,结果如下:


其中,红色马是第一名;
绿色马有机会得第二名;
浅蓝色马有机会得第三名;
深蓝色马有机会得第四名;
紫色马有机会得第五名。
下一场是2匹绿色马和3匹浅蓝色马比赛,可决出第二名和第三名。
例如,一种可能的结果如下:


那么上述结果可以写成:


于是前三名是唯一确定的。
下一场是3匹蓝色马加2匹紫色马比赛,可确定第四名。
无论比赛结果如何,只要再加赛1场一定可以确定第五名。
共进行了9场比赛。
但楼主只要求确定跑得最快的5匹马,并不要求确定这5匹马的确切排名。
所以可能会有更加巧妙的方案。
让我们期待更佳的方案出现吧。

你可能感兴趣的:(算法与数据结构)