腾讯的一道测试题

      前几天做了腾讯的测试题,有一道题挺有意思的,题目的大意是:

有36辆摩托车6个赛道,在没有计时器的情况下,如果要选出跑的最快的三辆车,至少需要几次比赛?

      我最初的想法是:要选出最快的三辆车,先让这36辆车分成6组,每一组比一下,选出每一组的第一名,然后让这6个第一名比一次,选出前三名就行了,果断的选择了7次,显然这是错误的(这个题和田忌赛马有那么一点点的相似,看来的我智商不如古人啊.....囧)。

      后来仔细一想,我觉得应该这么想:假设36辆车被分配到了A,B,C,D,E,F六组中,我们给每一组比赛一次,从中选出每一组的三辆车,A1-A3...F1-F3(为什么要选出三辆车呢?为了防止出现36辆车中最快的3辆都被分配到了A组中,如果按照最开始的想法,第一次比赛就把实际上第二快和第三快的车都给淘汰了,所以最开始的想法是错误的,选出三辆就不会出现实际上最快的前三辆车被淘汰的情况),这6组需要6次比赛,然后我们将A1,B1,C1,D1,E1和F1(假设A1,B1,C1,D1,E1,F1是每组中最快的车)比赛一次,选出前三名,假设前三名是A1,B1,C1,那么此时被淘汰的车是DEF这三组的所有车(因为这三组中最快的三辆车都输了),剩下的问题就是在A1-A3,B1-B3和C1-C3这9辆车中找到最快的三辆车,显然至少需要2次比赛。

      因此,总的比赛次数应该是9次(6+1+2),如果谁有更快的思路,欢迎留言并交流!!!

原文地址:https://www.cnblogs.com/sjinsa/p/4774972.html