谷歌有一个面试题题目很简单,25个人在只有5条跑道上如何用最少的比赛方法决出前三名
这个问题你这样想,5条跑到每个跑道一个人,也就是说最少一组可以同时比5个人,25/5=5也就是可以分成5组.
为了方便我们就假设,分成ABCDE五组,A1,A2,A3,A4,A5代表五个成员,同样B1.... C1...D1....E1....各个成员如下如所示
然后开始比赛,每一列分别进入跑到开始比赛,一共进行5轮比赛(一共5列嘛),为了方便我们假设,每组标号为1的获得本组的第一名,标号为2的代表本组第二名一次类推.这样进行5轮比赛之后,我们在比一次,就是每组的第一名进行比赛,即A1,B1,C1,D1,E1 (正好五个人),假如A1胜出,第一名就出来了, 然后第二名怎么角逐,第二名这样A2,B1,C1,D1,E1 角逐第二名,这里边无论谁获得第一名都无所谓,我们假设A2获得了第一名,那么第三名角逐就是A3,B1,C1,D1,E1,我们假设C1获得第二名,那么第三名角逐,就这样安排A2,B1,C2,D1,E1,同样方法你假如E1获得第二名,那么第三名角逐就是A2,B1,C2,D1,E2
也就是说我们一共5(淘汰三)+1(冠军)+1(亚军)+1 (季军)=8次就可以角逐前三名.
注意:我第一次是这样想的先进性五组淘汰赛,然后A1,B1,C1,D1,E1 比一次 然后直接就可以排除前三名,这样想是不对的,你想我们假设A1,B1,C1获得了前三名,A1跑的比B1快,同样A1也比A2跑得快 (既A1>B1 A1>A2 )你没法证明B1和A2之间谁跑的快对不对.
但是你如果给面试过说一共需要8次,那么这个答案就错了.确实需要7次就可以.
同样,5组淘汰赛,然后一组第一名角逐(A1,B1,C1,D1,E1) 不变,我们题目是决出前三名,这样操完之后已经决出第一名了,我们剩下目标是决出第二名,第三名,也就是只有2个名额了,你想啊A1,B1,C1,D1,E1 第一名除掉,第四名,第五名除掉,(也就是他们根本就没有比赛资格了,如果让他们比赛就相当于,世界杯足球赛,踢到角逐冠亚军的时候,安排一场亚军对中国的比赛)只剩下第二名和第三名我们假设B1,C1为第二名第三名. 如下图所示
第二名的角逐资格为,B1,和A2(即A组的第二名)
第三名的角逐资格为,A组的第三名,B组的第二名,以及C1(A3,B2,C1)
2+3一共五个人,正好一同上跑道 一次性比完