计算之魂思考题1.4赛跑问题

文章讨论了如何在短跑比赛中利用分组策略最少次数决出前三名。初始思路认为需要8次,但通过分析发现,实际上在确定第一名为A1后,其他组的选手被淘汰,只需要再进行1次比赛即可决出其余名次,总共需要7次。

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

一、问题

假设由25名短跑者争夺比赛前三名,赛场上有5条赛道,一次可以有5名选手同时比赛。比赛不计时,只看相应名次。假设选手发挥稳定,也就是说如果约翰比张三跑得快,张三比凯莉跑得快,那么约翰一定比凯莉跑得快。最少需要几次比赛才能决出前三名?

二、思路

  1. 首先分5组ABCDE,每组5人比一次
  2. 将各组的第一名拉出来比一次,则此时决出第一名,假设A1
  3. 将A2 BCDE1比一次,决出第二名C1或A2。
  4. 将A3 BCDE1或 A2 C2 BDE1比一次决出第三名

此时需要8次才能决出前三名。

三、纠错

上边思路中未考虑全面,做了一步无用功

1. 比出A1时,此时假设排序为A1>B1>C1>D1>E1,由于只需决出前三名,而D组E组全体成员由于前面至少有3个超过的了,所以D组E组全部淘汰。

2.C2前面由于至少有A1 B1 C1 3个超过了,所以C组只有C1有可能竞争前三

3.B3前面至少有A1 B1 B2 3个超过了,所以B组只有B1 B2 有可能竞争前三

4.A4前面至少有 A1 A2 A3 3个超过了,A组只有 A1 A2 A3有可能竞争前三

所以当决出A1为第1名时,此时还剩下 A2 A3 B1 B2 C1 有可能竞争前三,只需让他们5个比1次就好按顺序前两名为第2、3名。

此时需要7次就可决出前三名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值