遇到这种问题, 首先先不要尝试思考具体的方式, 先用算法找上下限, 接下来不断通过验证和分析去缩短已经确定的上下限(因为你的上下限计算方式可能不对).

这里先给一个简单的题: 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. 确定是否能够达到下限

实际上这个很容易想,

  1. 先分8组赛8次, 决出8对的顺序, 每组淘汰掉后四名.
  2. 从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, X3A2,A3,A4 中产生, 因此再加赛一次, 就可以决出前4名。此时共赛了 10 次.

  • 11次情况:如果X4第三名, 第四名, 以及第四名之后, 那么情况如下面图片所示,图中被红框框中的是需要再次比赛的马,被马赛克模糊的是被淘汰的马, 从图中可见,需要再次比赛的马在 9~12匹之间, 均需要赛两次才能决出另外最快的三匹马. 此时共需要赛11

    X4第3名:

    X4第4名:

    X4第4名之后:

第二题: 思考, 64 匹马,8赛道,至少比赛几场, 一定能找出跑得最快的 4 匹马,

先附一个我之前的论述

  1. 先分 8 组赛 8 次, 每组淘汰掉后四名

  2. 第9次由每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马

  3. 此时第一名已经产生, 2,3,4 名只能在 A2,A3,A4,B1,B2,B3,C1,C2,D1 9 匹马 中产生.

  4. 第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.

  1. 依照第一题的分析, 要想把64匹马全部关联起来, 至少需要63个关系, 一次赛马能给7个关系, 所以下限是9次, 也就是说, 答案必定大于等于 9

  2. 然而9次比赛的情况只是将它们关联起来, 要想确定找出前4匹马, 9次肯定不够, 因此很容易判断, 下限是10, 也就是说, 答案必定大于等于 10

  3. 接下来试图找10次能够一定能够找出前4匹马的方法, 结果并没有找到, 找到的是 11次, 所以上限是 11, 也就是说, 答案必定在 [10, 11] 中.

  4. 接下来需要做的是

    • 证明10次比赛不能绝对找出最快的4匹马: 如果成功, 则答案是11
    • 找出10次能够一定能够找出前4匹马的方法: 如果成功, 则答案是10

奈何本人智商不够, 捣鼓了好久, 一个都没有找出来.

如果大家有10次就能确定找出最快4匹马的方法, 欢迎进行交流回复.

64匹马,8赛道,找出跑得最快的4匹马,至少比赛9场相关推荐

  1. 64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)

    首先,可以将马分为8组,每组各跑一次,然后淘汰掉后四名,这里淘汰后四名是因为只需要跑的最快的四匹马. 然后取8次跑的第一名进行比赛,然后淘汰掉后四名所在的组的所有马,因为,后四名所在的组的第一名没有跑 ...

  2. [高频面试题]64匹马,8个赛道,找出跑得最快的4匹马

    [高频面试题]64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场? 图片参考自网上,解题思路为本人原创,在此声明.评论区有很多小伙伴思路独特,想法很好,大家可以参考. update:2022年7月 ...

  3. 64匹马,8个赛道,找出跑得最快的4匹马

    64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场? 第一步 全部马分为8组,每组8匹,每组各跑一次,然后淘汰掉每组的后四名,如下图(需要比赛8场) 第二步 取每组第一名进行一次比赛,然后淘汰最后 ...

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

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

  5. 25 匹马,5 个赛道,没有计时器,请问最低多少次可以找出跑得最快的 3匹马

    第一次比赛 首先将25匹马分成5个小组,分别为A, B, C, D, E,比赛次数5次:5次 每个小组都分别进行比赛,分别得到前两名,分别为A1,A2, B1, B2, C1, C2, D1, D2, ...

  6. 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。...

    答案是7次. 1. 首先将25匹马分成5组a.b.c.d.e进行比赛.比赛的次数就是5次.得到每组的第一名,分别编号a1,b1,c1,d1,e1. 2. 然后我们将每组的第一名进行比赛,得出结果.假设 ...

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

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

  8. 腾讯面试题:64匹马,8个跑道,选出最快的四匹马

    题目描述 64匹马,8个跑道,需要赛多少场,选出最快的四匹马? 题目分析 题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是: 1.不能计时: 2.在最坏的情况下,至少多少轮比赛,必然能选择出 ...

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

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

最新文章

  1. 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div
  2. Sentinel(二十三)之使用Apollo存储规则
  3. 读书随笔:The Book of Why——CHAPTER 2:From Buccaneers to Guinea Pigs: The Genesis of Causal Inference
  4. 自学python能干什么-python能干啥
  5. 约束布局管理器 CAConstraintLayoutManager 以及其不起作用
  6. ACL2021 | 探讨跨句事件联合抽取问题
  7. js 测试正则表达式
  8. HTML5 桌面通知:Notification API的基础用法
  9. paip.utf-8,unicode编码的本质输出unicode文件原理 python
  10. uniapp 拍照 或者 相册 识别身份证信息
  11. 《和平精英》枪械怎么搭配最无敌?大神竟然都爱平底锅?
  12. 去除Word中的红色或则绿色波浪线
  13. Photoshop分享| 拼贴海报
  14. Show一下拿的奖杯
  15. 数据结构(四)—— 图(1):什么是图
  16. iOS 获取照相机实时预览图片
  17. 与第三方接口调用时白名单功能
  18. Qiime2+Origin绘制稀释曲线
  19. 京东智臻链首推电子营业执照区块链应用场景落地!
  20. threeJS创建粒子波浪

热门文章

  1. Div与Span标签详解
  2. 流体力学基础——简介
  3. java翁恺MOOC每周编程题
  4. 信息安全精彩视频分享-一张纸入侵企业号星舰
  5. 直流无刷电机及Matlab/Simulink驱动仿真
  6. WORD排版技巧(一)
  7. html 导航切换内容
  8. 那些年,我们一起参加过的高考
  9. Nacos Go微服务生态系列(一) | Dubbo-go 云原生核心引擎探索
  10. 强大的 mysql管理工具之 Mysql Query Browser