有81个选手,9个赛道,要求选出前4名。最快需要多少场?

面对81个选手和9个赛道,要选出前4名。最初认为需要16场比赛,但通过分析发现可以优化。先让每组9名选手比赛,取9组第一名再赛一场确定第1名。然后取各组排名靠前的选手进行比赛,通过11场即可决出前4名,优于最初的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题目:

有81个选手,9个赛道,要求选出前4名。需要多少场?

不考虑计算具体成绩,不然9场就够了。


分析:

最直观的解题步骤是:

1. 先将81个选手,分成9组进行比赛,每组都有9名选手。由于只需要选出前4名,则可从每组挑出前4名继续比较,需要比赛人数为36个

2. 将36个选手,分成4组进行比赛,每组仍旧是9名选手。继续从每组挑出前4名,则需要比赛人数为16个。

3. 将16个选手,分成2组进行比赛,每组是8名选手。继续从每组挑出前4名,则需要比赛人数为8个。

4. 将8个选手分成1组进行比赛,比完则决策出了最终的前4名。

>>>>>需要16场。但,这不是最优解。


回过头来,仔细分析上面的步骤,看看是否有优化的空间。

上述解法的步骤1-4,都是基于每组最新比赛结果取前四名后继续进行决策。

但,直接取每组前4名的做法是否能够再细化呢,能否排除掉一些必然不是在81中前4的选手。

再进一步分析,针对第一步比完后的9组选手,如果我能知道哪些组偏强,则前4名必然在偏强的前四组里面,这样理论上能够再过滤掉一些选手。

具体方法如下:

1. 先将81个选手,分成9组进行比赛,每组都有9名选手。比完后,每组中取第一名再比1场,此时9组中的第一名的排名也出来了,81个选手中排名前四的选手,必然在排名前四的组。

分析可发现:

最终的前1名,必然是排名第1组中的第1名。

最终的前4名可能是排名第1组中的前4名;

最终的2,3,4名,可能是排名第2组中的前3名;

最终的3,4名,可能是排名第3组中的前2名;

最终的第4名,可能是排名第4组中的前1名。

所以,此时取"排名第1中的第2,3,4名选手;排名第2中的第1,2,3名选手;排名第3中的第1,2名选手;排名第4中的第1名选手“再进行比赛,共9名选手,比1场后的前3名选手,则是前81名中排名在2,3,4的选手。

>>>>>只需要11场。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值