题目:

有64辆赛车进行不计时比赛,一共有8个赛道,想要找出最快的四辆车,要至少比赛多少轮?给出你的方案。

很久以前就在朋友圈看有人分享过XX大厂面试题,点进去一看,就是这道题,当时的我年少无知心想就这?没成想算法实验报告就遇上它了,果然大厂面试题诚不我欺。

问题分析

问题中隐含的意思:

  • 只需要找出最快的四辆车,不需要具体的排名。
    淘汰原理:
  • 一辆赛车 在一次比赛中获得名次 n,那他在 64 辆车中最好可能的排名就是 n
  • 任意比赛,只要排名在第五及以后的车,直接淘汰
  • 如果一辆车在一次比赛中获得第四名,那么已知比它慢的车可就都可以淘汰了(包括在其他比赛中得出的结果)

算法设计

先说结果:10轮大概率出结果,11轮一定出结果
1.64进32(共8轮)
将64辆赛车随机分成八组进行比赛,最终每组决出前四名和后四名,则每组的后四名一定不会是最快的四辆车,淘汰每组后4辆,共8组,最终淘汰32辆

2.32进10(共1轮)
让刚刚八组比赛的每组排名第一的八辆赛车进行比赛。决出前四名与后四名,后四名淘汰。又因为后四名均为每组的第一,则这四组里的车均不可能是最快的四辆车,淘汰每组4辆,共四组,共16辆。
前四名中,对于第二名所在的组来说,已知一定有一辆车比第二组的第一名快,所以前四快的车第二组最多有三辆,则淘汰掉第二组的第四名。同理,已知有两辆车比第三组的第一名快,所以前四快的车第三组最多又两辆,则淘汰掉第三组的第三名和第四名;已知有三辆车比第四组的第一名快,所以前四名最多有一辆来自第四组的车,淘汰掉第四组的二三四名,共淘汰掉D组3辆+C组2辆+B组1辆,共6辆。本轮共淘汰16 + 6 = 22辆,剩余10辆。

3.第10轮,可能出结果

目前的情况是:还剩10辆车,已知A1是最快的车,不再考虑A1,还剩九辆车。第二快的车,只会在A2和B1中产生,已知B2、B3、C1、C2、D1都比B1慢,不妨暂时先把B1搁置,让B2、B3、C1、C2、D1和A2、A3、A4八辆车进行比赛。在最终结果中,如果是A2、A3、A4包揽前三名,则不能确定最快的四辆车。其他情况,均能确定最快的四辆车。理由如下:

  • 如果前三中只有两辆来自A2、A3、A4(其实一定会是A2、A3,因为A4比他俩慢),一辆来自B2、B3、C1、C2、D1,则最终结果是A1、A2、A3、B1,因为B1比那六辆车快(比A4快是因为刚比完的这轮,A4未进前三,则那五辆车中一定有一辆车比A3快,B1还比那五辆快,所以B1比A4快),A1、A2、A3也比那六辆车快,则最快的四辆车是A1、A2、A3、B1。(上面的顺序不代表最终速度排名,题目中只说需要找出最快的四辆车,不需要确定他们的内部排名,如需要确定排名还需A2、A3、B1加赛一轮)。
  • 如果前三中只有一辆来自A2、A3、A4(一定是A2),则最快的四辆车是A1、A2、B1+本组除A2外排名第一的车。理由与上面类似,用B1代替掉除A2外排名第二的车。
  • 如果前三中没有车来自A2、A3、A4,则最快的四辆车是A1、B1+本组前两名。理由与上面类似,用B1代替掉除第三快的车。

4.第11轮,一定出结果
只有在上面A2、A3、A4包揽前三名的时候,才需要进行第11轮比赛,只需要将A4和B1进行比赛,如果A4胜出,则A1、A2、A3、A4为最快的四辆车,否则,A1、A2、A3、B1为最快的四辆车。(上面的顺序不代表最终速度排名,题目中只说需要找出最快的四辆车,不需要确定他们的内部排名)。
算法over,如果对你有帮助不妨点个赞再走,哪里有疑惑可以在评论区提出~

有64辆赛车进行不计时比赛,一共有8个赛道,想要找出最快的四辆车,要至少比赛多少轮?给出你的方案。相关推荐

  1. 64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场

    遇到这种问题, 首先先不要尝试思考具体的方式, 先用算法找上下限, 接下来不断通过验证和分析去缩短已经确定的上下限(因为你的上下限计算方式可能不对). 这里先给一个简单的题: 4个矿泉水瓶可以换一瓶矿 ...

  2. 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?

    说一种10场就可以找到跑的最快的四匹马的解法 第一步: 通过八场比赛可以得到如图排序,红框内成员已可确定不可能进入前四,顾后续不予考虑 第二步: 将每一场比赛的第一名在进行一次比赛,假设排序结果为: ...

  3. 64匹马8个跑道需要多少轮才能挑选出最快的4匹马?

    64匹马8个跑道需要多少轮才能挑选出最快的四匹马? 第一步 把64匹马分成8组,每组各比赛一次,按照快慢进行排序,出现以下结果: 第二步 淘汰每一组的最后四匹,因为只需要跑的最快的四匹,即使出现一个组 ...

  4. 智力题:64匹马8个跑道,至少需要多少轮才能挑选出最快的4匹马

    题意: 64匹马8个跑道需要多少轮才能挑选出最快的四匹马? 解法: 1.分成八组,每组8匹马. 2.八组内部分别比赛,总共比八场,对每组的马排序. 每组的后四匹显然不是答案,直接淘汰. 现在只剩下八组 ...

  5. 64匹马,8个赛道,最少多少次比赛找出最快的 4 匹马,以及对所有马进行排序

    问题:64匹马,8个赛道,最少几场比赛找出最快的 4 匹马,最少几场对所有马进行排序 问题一:64 匹马,8 个赛道,最少几场比赛找出最快的 4 匹马 问题中隐含的意思:   1.就是每次比赛马的时间 ...

  6. 测试题:64 匹马,8 个赛道,最少多少次比赛找出最快的 4 匹马?

    文章目录 问题一:64 匹马,8 个赛道,最少几场比赛找出最快的4匹马? 问题二:64 匹马,8 个赛道,最少多少次比赛对所有马进行排序? 问题一:64 匹马,8 个赛道,最少几场比赛找出最快的4匹马 ...

  7. 第十五届全国大学生智能车线上比赛流程规范总结

    在2020年的新冠病毒催生下的智能车云端比赛横空出世,并经过2020年暑期的不断摸索尝试下,可以考虑进一步扩展.下面对于2020年暑期的华南赛区的现场比赛相关的经验进行梳理. □ 相关博文 第十五届全 ...

  8. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹

    昨天,有网友私信我,说去阿里面试,彻底的被打击到了.问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题.无独有偶,今天笔 ...

  9. 64匹马8个跑道需要多少轮才能选出最快的四匹

    分成两种场景: 计时的场景:8场,不用解释,根据计时排名 无计时的场景:最少10场,最多11场 思路: 1.分8组决出8组前四名,共跑8次,每个小组剩下四人:(已跑8场) 2.把八个小组里面的第一名选 ...

最新文章

  1. linux 内存管理中的 rss 和 vsz
  2. aop切面排除某个类_AOP 你看这一篇就够了
  3. 铁乐学Python_day12_作业
  4. 链接二叉树中同一层的节点
  5. boost::hana::is_a用法的测试程序
  6. 电视盒安装php,全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx...
  7. ping 中的“TTL是什么意思
  8. shell脚本工具之awk命令
  9. CentOS7救援模式以及救援模式的网络配置
  10. Java中Date日期以及日期格式化
  11. 中国双侧人工耳蜗行业市场供需与战略研究报告
  12. 程序员必备技能之单元测试
  13. jQuery源码06-jQuery = function(){};给JQ对象,添加一些方法和属性,extend : JQ的继承方法,jQuery.extend()...
  14. c语言设计四路彩灯显示系统,数字电路逻辑设计课程设计-四路彩灯显示系统设计...
  15. 商城系统演示站 -多用户商城系统
  16. opencv 安装及配置
  17. ESAPI自定义配置文件路径
  18. linux 模拟手机浏览器,Firefox模拟手机浏览器(iOS+Android) – UserAgent Switcher使用方法...
  19. “换个江湖再见”阿里巴巴20周年年会直击:岁月很暖,未来很酷。
  20. 截屏 远程协助 android,ARDC Android 远程桌面助手 录屏 演示 MD

热门文章

  1. 获取路由器(光猫)管理员权限
  2. RM云台黑箱系统辨识及建模
  3. 考研c语言入门自学书籍推荐,【每周一点】2020计算机考研:参考书及复习重点...
  4. 【每日随笔】关于 “ 道德绑架 “ 的观点 ( 不要在乎别人对你的态度 | 塑造别人对你的看法 - 尊重 崇拜 畏惧 | 登门坎效应 | 登门坎效应的案例 | 底层人言论 )
  5. echarts图表的一些小技巧(持续更新,自用)
  6. 2021-09-17 ROS2教程(三)-服务客户端创建(C++/Python)记录
  7. 说说Error 和 Exception 有什么区别?
  8. NC | 中国农大草业学院杨高文组揭示发现多因子干扰会降低土壤微生物多样性的积极效应...
  9. java 表头固定_BootStrap的table表头固定tbody滚动的实例代码
  10. CListCtrl(clistctrl获取选中行数据)