64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场
遇到这种问题, 首先先不要尝试思考具体的方式, 先用算法找上下限, 接下来不断通过验证和分析去缩短已经确定的上下限(因为你的上下限计算方式可能不对).
这里先给一个简单的题:
4个矿泉水瓶可以换一瓶矿泉水,现有15个矿泉水空瓶,不交钱最多喝多少矿泉水
碰到这种题, 先不要思考具体方式, 先用算法找下限
因为:
4个瓶子 = 一瓶矿泉水 = 1个瓶子 + 水(一瓶)
,
所以:水(一瓶) = 3个空瓶
之后很容易得出下限是15/3 = 5
之后发现确实能达到这个下限, 所以答案是5.
第一题: 64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场
1. 试图找最低次数
假如
A>B
,B>C
, 我们称之为两对关系, 通过这两对关系, 我们就可以确定A>C
, 我们很容易得出想要确定 A,B,C 三者的关系, 至少需要确定它们两对关系.
64 匹马, 确定它们所有马之间的顺序, 至少需要多少对关系呢?
答案是 63 对关系, 它们的顺序是一条长链, 很容易想象.
8个赛道一次最多只能给它们 7对 关系.
所以最少需要比赛 63 / 7 = 9(次).
因此, 至少 9 次比赛, 就可以确定出它们所有马之间的顺序关系.
2. 确定是否能够达到下限
实际上这个很容易想,
- 先分8组赛8次, 决出8对的顺序, 每组淘汰掉后四名.
- 从8组中挑一组, 称为第 X 组, 第 X 组的最后一名
X4
和剩余7组的第一名进行比赛
之后根据它们的比赛结果判断需要比赛几次
假设
A1-G1
比赛结果是A1>B1>C1>D1>E1>F1>G1
9次情况:如果
X4
第一名, 那么就立刻确定出X1, X2, X3, X4
是最快的四匹马. 此时共赛了9
次.10次情况:如果
X4
第二名, 如下图, 比A1高的只能是X1, X2, X3
,所以A1
最差也能得第四,所以A1
必定在最快的四匹马之中。X4
前面有X1, X2, X3
, 再加上个A1
, 因此X4
最高得第5名,X4
以及它后面的马直接淘汰,剩余最快的三匹马只可能在X1, X2, X3
,A2,A3,A4
中产生, 因此再加赛一次, 就可以决出前4名。此时共赛了10
次.11次情况:如果
X4
第三名, 第四名, 以及第四名之后, 那么情况如下面图片所示,图中被红框框中的是需要再次比赛的马,被马赛克模糊的是被淘汰的马, 从图中可见,需要再次比赛的马在9~12
匹之间, 均需要赛两次才能决出另外最快的三匹马. 此时共需要赛11
次X4
第3名:
X4
第4名:
X4
第4名之后:
第二题: 思考, 64 匹马,8赛道,至少比赛几场, 一定能找出跑得最快的 4 匹马,
先附一个我之前的论述
先分 8 组赛 8 次, 每组淘汰掉后四名
第9次由每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马
此时第一名已经产生, 2,3,4 名只能在
A2,A3,A4,B1,B2,B3,C1,C2,D1
9 匹马 中产生.
第10次比赛由A4, 和B2比
- 如果A4赢了B2, 那么A1-A4就是前四名, 此时需要10场.
- 如果A4输了B2, A4淘汰, 剩余8匹马再赛一次决出前4名, 此时需要11场.
但是
11
这个答案能不呢再降一下呢?
上图里面的7个红色箭头, 代表7个关系, 实际上在前9次比赛中就已经获得这7个关系了,
9匹马, 8个赛道, 赛两次, 有一次非常浪费赛道的价值,
上面的论证表明 11 场比赛一定能够找出跑得最快的 4 匹马.
那么这道题的答案是11
吗?
老实说, 这道题的答案我不确定, 最终结果未必是11次! 但我知道这道题的答案, 要么是10, 要么是11.
依照第一题的分析, 要想把64匹马全部关联起来, 至少需要63个关系, 一次赛马能给7个关系, 所以下限是9次, 也就是说, 答案必定大于等于 9
然而9次比赛的情况只是将它们关联起来, 要想确定找出前4匹马, 9次肯定不够, 因此很容易判断, 下限是10, 也就是说, 答案必定大于等于 10
接下来试图找
10次能够一定能够找出前4匹马的方法
, 结果并没有找到, 找到的是11次
, 所以上限是11
, 也就是说, 答案必定在[10, 11]
中.接下来需要做的是
- 证明10次比赛不能绝对找出最快的4匹马: 如果成功, 则答案是
11
- 找出10次能够一定能够找出前4匹马的方法: 如果成功, 则答案是
10
- 证明10次比赛不能绝对找出最快的4匹马: 如果成功, 则答案是
奈何本人智商不够, 捣鼓了好久, 一个都没有找出来.
如果大家有10次就能确定找出最快4匹马的方法, 欢迎进行交流回复.
64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场相关推荐
- 64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)
首先,可以将马分为8组,每组各跑一次,然后淘汰掉后四名,这里淘汰后四名是因为只需要跑的最快的四匹马. 然后取8次跑的第一名进行比赛,然后淘汰掉后四名所在的组的所有马,因为,后四名所在的组的第一名没有跑 ...
- [高频面试题]64匹马,8个赛道,找出跑得最快的4匹马
[高频面试题]64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场? 图片参考自网上,解题思路为本人原创,在此声明.评论区有很多小伙伴思路独特,想法很好,大家可以参考. update:2022年7月 ...
- 64匹马,8个赛道,找出跑得最快的4匹马
64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场? 第一步 全部马分为8组,每组8匹,每组各跑一次,然后淘汰掉每组的后四名,如下图(需要比赛8场) 第二步 取每组第一名进行一次比赛,然后淘汰最后 ...
- 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
说一种10场就可以找到跑的最快的四匹马的解法 第一步: 通过八场比赛可以得到如图排序,红框内成员已可确定不可能进入前四,顾后续不予考虑 第二步: 将每一场比赛的第一名在进行一次比赛,假设排序结果为: ...
- 25 匹马,5 个赛道,没有计时器,请问最低多少次可以找出跑得最快的 3匹马
第一次比赛 首先将25匹马分成5个小组,分别为A, B, C, D, E,比赛次数5次:5次 每个小组都分别进行比赛,分别得到前两名,分别为A1,A2, B1, B2, C1, C2, D1, D2, ...
- 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。...
答案是7次. 1. 首先将25匹马分成5组a.b.c.d.e进行比赛.比赛的次数就是5次.得到每组的第一名,分别编号a1,b1,c1,d1,e1. 2. 然后我们将每组的第一名进行比赛,得出结果.假设 ...
- 一个赛马问题 25匹马5个赛道,每个赛道每次只能跑一匹马,问需要跑几次,能求出跑得最快的三匹马。...
肯定 7 次 25匹马先设5组:假设A,B,C,D,E五组 跑5轮后选每组前3名进下一轮 每组第一名比赛一轮(第6圈)得出第一名(假设A1)第二名(假设B1)第三名(假设C1) 从(第6圈)第一名组中 ...
- 腾讯面试题:64匹马,8个跑道,选出最快的四匹马
题目描述 64匹马,8个跑道,需要赛多少场,选出最快的四匹马? 题目分析 题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是: 1.不能计时: 2.在最坏的情况下,至少多少轮比赛,必然能选择出 ...
- 经典面试题:64匹马,8个赛道,找出前4名最少比赛多少场?
第一步:全部马分8组,各跑一次,然后淘汰掉每组的后四名(8次): 此时,只有列上有大小关系,行上是没有大小关系的. 最少10次选出前四,最多11次选出前四 在以上的两次比赛过后可以得出,A1 直接晋级 ...
最新文章
- 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div
- Sentinel(二十三)之使用Apollo存储规则
- 读书随笔:The Book of Why——CHAPTER 2:From Buccaneers to Guinea Pigs: The Genesis of Causal Inference
- 自学python能干什么-python能干啥
- 约束布局管理器 CAConstraintLayoutManager 以及其不起作用
- ACL2021 | 探讨跨句事件联合抽取问题
- js 测试正则表达式
- HTML5 桌面通知:Notification API的基础用法
- paip.utf-8,unicode编码的本质输出unicode文件原理 python
- uniapp 拍照 或者 相册 识别身份证信息
- 《和平精英》枪械怎么搭配最无敌?大神竟然都爱平底锅?
- 去除Word中的红色或则绿色波浪线
- Photoshop分享| 拼贴海报
- Show一下拿的奖杯
- 数据结构(四)—— 图(1):什么是图
- iOS 获取照相机实时预览图片
- 与第三方接口调用时白名单功能
- Qiime2+Origin绘制稀释曲线
- 京东智臻链首推电子营业执照区块链应用场景落地!
- threeJS创建粒子波浪