目录

一、36匹马赛跑,跑到同时只能容许6匹马。而且36匹马速度不同,但是每次跑的速度恒定。问跑多少次可以选出第一、第二、第三名?

二、25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

1、前三名的解题思路

2、前五名的解题思路


一、36匹马赛跑,跑到同时只能容许6匹马。而且36匹马速度不同,但是每次跑的速度恒定。问跑多少次可以选出第一、第二、第三名?

36匹马赛跑,跑到同时只能容许6匹马。而且36匹马速度不同,但是每次跑的速度恒定。问跑多少次可以选出第一、第二、第三名?

A. 7    B. 8    C. 9    D. 12

可以分三步走。
(1)第一步,将36匹马分成6组,1次跑一组,跑6次。分别得到每组的排名。
A1, A2, ..., A6;
B1, B2, ..., B6;
C1, C2, ..., C6;
D1, D2, ..., D6;
E1, E2, ..., E6;
F1, F2, ..., F6
(2)第二步,让每组的第一名在一起跑一遍,取前三名(假设还是A1, B1, C1)
那么,A1肯定是整体的第一名
(3)第三步,
有可能成为整体第二的马为A2, B1
有可能成为整体第三的马为A3, B2, C1,一共5匹马,让这5匹马一起跑一遍,
选出前两名,就分别是整体的第二名、第三名
因此,总共需要6 + 1 + 1 = 8次,答案选B.

二、25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

这道题也有类似的变形:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

其答案可以参考下面这个人的,总结的比较好。https://blog.csdn.net/Xu_JL1997/article/details/89021916

在此,我也做下总结。

1、前三名的解题思路

将25只马分成五组,每组比赛一次,总共比赛5次。得到每组的排名结果如下(假设每组的排名为A1->A2->A3->A4->A5)。也就是得到5个有序数组。

将五组的第一名放到一起比赛1次,得到第一名为A1(假设排名为A1->B1->C1->D1->E1),也就是整体的第一名。

此时整体的第二名、第三名的范围就在“从A1出发,长度在3以内的路径中”,如下图所示,也就是A2、A3、B1、B2、B3、C1。将它们放在一起比赛1次,就可以知道整体的第二名、第三名了。

因此,总共需要5+1+1次比赛。

2、前五名的解题思路

思路一:

先通过分组得到5个有序数组(5次比赛)。

接下来采取Merge操作(归并操作),将5个指针分别指向5个有序数组的第一个数字(5个分组各自的第一名),将五个指针所指向的放到一起比赛1次,得到当前第一名,同时将第一名的指针向右移动一位。重复刚才的操作5次,不断得到“剩余的马中的第一名”(5次比赛)。

因此,总共需要5+5次。

思路二:参考 https://blog.csdn.net/Xu_JL1997/article/details/89021916

还是先通过分组得到5个有序数组(5次比赛)

找到五个分组第一名中的整体第一名(1次比赛)

将B1与A2、A3、A4、A5进行一次比赛(1次比赛),根据B1在其中的排名,来决定是否需要对后面4组进行比赛。这是因为,B1是后面4组的最大值,如下图所示。

如果是[A2, A3, A4, A5, B1],则无需再比,第二到第五名分别是A2-A5,总共需要7次比赛;

如果是[A2, A3, A4, B1, A5],无需再比,第二名到第五名分别是A2, A3, A4, B1,总共需要7次比赛;

如果是[A2, A3, B1, A4, A5],此时确定了第二名到第四名(A2, A3, B1),A4不一定是第五名,因此需要对[A4, B2, C1, D1, E1]再进行一次比赛,总共需要8次比赛;

如果是[A2, B1, A3, A4, A5],此时确定了第二名、第三名(A2, B1),最差情况下需要进行两次归并操作,也就是再进行2次比赛,因此需要9次比赛;

如果是[B1, A2, A3, A4, A5],此时只能确定第二名为B1,对于第三、第四、第五名,最差情况下需要进行3次归并操作,也就是3次比赛来确定,因此需要10次比赛。

因此,总共需要7到10次比赛。

这种思路有点类似于【剑指offer  二维数组中的查找】,利用元素之间的有序性和相对大小,来缩小搜索范围,起到一个“剪枝”的作用。

https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&&tqId=11154&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

跑马问题--36匹马,跑道每次最多只能有6匹马进行比赛,最少进行多少次比赛能比出前3名?相关推荐

  1. BAT 面试题:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

    写在前面:最近在刷面试题的过程中遇到这么一道题,感觉解读题目的角度很多,这里介绍自己的做法.注意:本文并不是参考答案,只是为大家在面试的时候多提供一条思路,或许可以获得面试官的青睐. 25匹马,5个跑 ...

  2. 25匹马,5个赛道,决出前n名

    25匹马,5个跑道,每次比赛最多能有5匹马进行比赛,最少比多少次能比出前3名?前5名? 前3名: (1)将所有马分成5组,ABCDE.每组分别先比,决出各组名次.共5次. (2)第1名肯定从这5个第1 ...

  3. 经典面试题:64匹马,8个赛道,找出前4名最少比赛多少场?

    第一步:全部马分8组,各跑一次,然后淘汰掉每组的后四名(8次): 此时,只有列上有大小关系,行上是没有大小关系的. 最少10次选出前四,最多11次选出前四 在以上的两次比赛过后可以得出,A1 直接晋级 ...

  4. 【算法】25匹马,每次最多赛5匹,最少几次可以赛出前三名?

    答案是7次 第一步 将25匹马平均分五组,分别比赛,然后淘汰掉每组的第四第五名,每个组剩下3匹马. 第二步 将剩下五个组的第一名拉出来赛跑,排名为第四名和第五名所在的整个组淘汰,这样还剩3个组,每个组 ...

  5. 腾讯面试:赛马问题【超详细图解】64匹马,8个赛道,找出前4名最少比赛多少场?

    目录 常规思路 正确答案解析 第一轮:8场 第二轮:1场 第三轮:1场或2场 总结 引子:在面试大厂时,怎么也没想到会考我一道脑筋急转弯. 问题:有64匹马和8条跑道,每次只允许最多8匹马同时比赛(假 ...

  6. 64匹马,8个赛道,找出前4名最少比赛多少场?

    结论:最少10次,最多11次 第一步 全部马分8组,各跑一次,然后淘汰掉每组的后四名.这里需要8次. 第二步 取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马.这里需要1次. 其实这时候深色区 ...

  7. 【大厂智力题】64匹马,8个赛道,找出前4名最少比赛多少场?

    如果能计时,果断8场, 然并卵,事情没有那么简单:不能计时. 那就老老实实分析. 首先将马分成八组,赛八场,每场后四名淘汰了. 然后将八组中,每组跑得最快的马进行比赛,淘汰后四名的组. 这个时候剩下四 ...

  8. 25 匹马 5 条赛道,最快需要几轮求出前 3 名?

    请点赞关注,你的支持对我意义重大.

  9. 一个赛马问题 25匹马5个赛道,每个赛道每次只能跑一匹马,问需要跑几次,能求出跑得最快的三匹马。...

    肯定 7 次 25匹马先设5组:假设A,B,C,D,E五组 跑5轮后选每组前3名进下一轮 每组第一名比赛一轮(第6圈)得出第一名(假设A1)第二名(假设B1)第三名(假设C1) 从(第6圈)第一名组中 ...

最新文章

  1. IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7)
  2. 使用互联网了解的两个月里_我两个月来对Quarkus的了解
  3. 嵌入式C语言编程——.h文件与.c文件
  4. Taro+react开发(79):taro生命周期setstate异步
  5. C++工作笔记-C++中assert的作用
  6. HDU Problem 4857 逃生【拓扑排序+优先队列】
  7. tcp报文解析工具_15 张图,了解一下 TCP/IP 必知也必会的 10个要点
  8. Perl入门(七) Perl脚本的调试
  9. 华为云郑叶来:优势挡不住趋势,技术创新是主旋律
  10. Elasticsearch聚合 之 Ip Range IP地址范围聚合
  11. OC语言之Protocol基本使用
  12. 品优购psd文档分享
  13. 连续优化、离散优化、组合优化、整数优化和凸优化
  14. excel数据分析模块
  15. 电商平台接入手机支付宝支付(服务商授权模式,可直接付款给卖家)
  16. MATLAB subplot子图分块绘制的方法
  17. 织梦网站后台-织梦网站后台登陆方式-织梦CMS模板
  18. 面试运维没工作经验怎么办?
  19. 说说filter这个css属性(网站置灰实现)
  20. 课得软件丨纵观全球程序员税后年收入,中国排在第几?

热门文章

  1. 数据中心与机房工程有何不同
  2. 【0基础】输入cq值即获得可截断的带显著区间的显著水平的表达量柱状图
  3. 互联网人才泡沫:百度腾讯阿里大打人才争夺战
  4. 前端Vue制作日历插件FullCalendar
  5. js通过面向对象编程思想实现小球碰撞的小练习
  6. eFlash控制器设计
  7. Qt显示视频流——nginx+rtmp搭建直播服务器(二)
  8. 抽象代数----轨道G(x)是等价关系
  9. 简单的排版技巧让你的曲谱更加美观
  10. 2020年十个强大的数据建模工具