今天在网上看到了一个挺有趣的算法题,在此给出我对这个题的理解和解答。
【问题描述】
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问至少得比多少场才能知道跑得最快的5匹马。
【我的解法】
先分为5组分别进行比赛,得到每组的顺序A1,A2,A3,A4,A5 和B1,B2,B3,B4,B5等等,此时是5场。
然后将最快的5匹A1,B1,C1,D1,E1进行比赛,得到最快的马,比如是A1,那么再用A2,B1,C1,D1,E1进行比赛得到第二快的马,以此类推得到排名前5的马。
总共需要5+1+1+1+1+1=10场比赛。
【问题描述】
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问至少得比多少场才能知道跑得最快的5匹马。
【我的解法】
先分为5组分别进行比赛,得到每组的顺序A1,A2,A3,A4,A5 和B1,B2,B3,B4,B5等等,此时是5场。
然后将最快的5匹A1,B1,C1,D1,E1进行比赛,得到最快的马,比如是A1,那么再用A2,B1,C1,D1,E1进行比赛得到第二快的马,以此类推得到排名前5的马。
总共需要5+1+1+1+1+1=10场比赛。