跑马问题--36匹马,跑道每次最多只能有6匹马进行比赛,最少进行多少次比赛能比出前3名?
目录
一、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名?相关推荐
- BAT 面试题:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?
写在前面:最近在刷面试题的过程中遇到这么一道题,感觉解读题目的角度很多,这里介绍自己的做法.注意:本文并不是参考答案,只是为大家在面试的时候多提供一条思路,或许可以获得面试官的青睐. 25匹马,5个跑 ...
- 25匹马,5个赛道,决出前n名
25匹马,5个跑道,每次比赛最多能有5匹马进行比赛,最少比多少次能比出前3名?前5名? 前3名: (1)将所有马分成5组,ABCDE.每组分别先比,决出各组名次.共5次. (2)第1名肯定从这5个第1 ...
- 经典面试题:64匹马,8个赛道,找出前4名最少比赛多少场?
第一步:全部马分8组,各跑一次,然后淘汰掉每组的后四名(8次): 此时,只有列上有大小关系,行上是没有大小关系的. 最少10次选出前四,最多11次选出前四 在以上的两次比赛过后可以得出,A1 直接晋级 ...
- 【算法】25匹马,每次最多赛5匹,最少几次可以赛出前三名?
答案是7次 第一步 将25匹马平均分五组,分别比赛,然后淘汰掉每组的第四第五名,每个组剩下3匹马. 第二步 将剩下五个组的第一名拉出来赛跑,排名为第四名和第五名所在的整个组淘汰,这样还剩3个组,每个组 ...
- 腾讯面试:赛马问题【超详细图解】64匹马,8个赛道,找出前4名最少比赛多少场?
目录 常规思路 正确答案解析 第一轮:8场 第二轮:1场 第三轮:1场或2场 总结 引子:在面试大厂时,怎么也没想到会考我一道脑筋急转弯. 问题:有64匹马和8条跑道,每次只允许最多8匹马同时比赛(假 ...
- 64匹马,8个赛道,找出前4名最少比赛多少场?
结论:最少10次,最多11次 第一步 全部马分8组,各跑一次,然后淘汰掉每组的后四名.这里需要8次. 第二步 取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马.这里需要1次. 其实这时候深色区 ...
- 【大厂智力题】64匹马,8个赛道,找出前4名最少比赛多少场?
如果能计时,果断8场, 然并卵,事情没有那么简单:不能计时. 那就老老实实分析. 首先将马分成八组,赛八场,每场后四名淘汰了. 然后将八组中,每组跑得最快的马进行比赛,淘汰后四名的组. 这个时候剩下四 ...
- 25 匹马 5 条赛道,最快需要几轮求出前 3 名?
请点赞关注,你的支持对我意义重大.
- 一个赛马问题 25匹马5个赛道,每个赛道每次只能跑一匹马,问需要跑几次,能求出跑得最快的三匹马。...
肯定 7 次 25匹马先设5组:假设A,B,C,D,E五组 跑5轮后选每组前3名进下一轮 每组第一名比赛一轮(第6圈)得出第一名(假设A1)第二名(假设B1)第三名(假设C1) 从(第6圈)第一名组中 ...
最新文章
- IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7)
- 使用互联网了解的两个月里_我两个月来对Quarkus的了解
- 嵌入式C语言编程——.h文件与.c文件
- Taro+react开发(79):taro生命周期setstate异步
- C++工作笔记-C++中assert的作用
- HDU Problem 4857 逃生【拓扑排序+优先队列】
- tcp报文解析工具_15 张图,了解一下 TCP/IP 必知也必会的 10个要点
- Perl入门(七) Perl脚本的调试
- 华为云郑叶来:优势挡不住趋势,技术创新是主旋律
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
- OC语言之Protocol基本使用
- 品优购psd文档分享
- 连续优化、离散优化、组合优化、整数优化和凸优化
- excel数据分析模块
- 电商平台接入手机支付宝支付(服务商授权模式,可直接付款给卖家)
- MATLAB subplot子图分块绘制的方法
- 织梦网站后台-织梦网站后台登陆方式-织梦CMS模板
- 面试运维没工作经验怎么办?
- 说说filter这个css属性(网站置灰实现)
- 课得软件丨纵观全球程序员税后年收入,中国排在第几?