• 赛马


    这是我在微信公众号《奇舞周刊》上看到的一个算法题,题目是:64 匹马,8 个赛道,找出前 4 名最少比多少场?(马的速度恒定不变)

    1.第一轮,64匹马分成8组,比赛8场

    假装终点线-------------------------------------------------------------------

          A组:A1    A2    A3    A4    A5    A6    A7    A8

          B组:B1    B2    B3    B4    B5    B6    B7    B8

          C组:C1    C2    C3   C4    C5    C6    C7   C8

          D组:D1    D2    D3   D4    D5    D6    D7   D8

          E组:E1    E2    E3    E4    E5    E6    E7    E8

          F组:F1    F2     F3    F4    F5    F6     F7    F8

          G组:G1   G2    G3   G4    G5    G6    G7   G8

          H组:H1    H2    H3   H4    H5    H6    H7    H8

    给每组胜出的前四名编号,分别是1,2,3,4,即:

      A组:A1    A2    A3    A4

      B组:B1    B2    B3    B4

      C组:C1    C2    C3   C4

      D组:D1    D2    D3   D4 

      E组:E1    E2    E3    E4 

      F组:F1    F2     F3    F4

      G组:G1   G2    G3   G4

      H组:H1    H2    H3   H4

    到现在为止,已经进行了8场比赛

    第二轮:

    把每组的第一名拉出来比赛,一共8名,进入前四名的那一组才有资格留下,给前四名的组编号分别为,他们之间的名次关系为

      A组:A1 > A2 > A3 > A4

           ∨      ∨      ∨      ∨

      B组:B1    B2    B3    B4

           ∨    ∨      ∨     ∨

      C组:C1    C2    C3   C4

         ∨     ∨      ∨     ∨

      D组:D1    D2    D3   D4 

    到目前为止一共比赛8+1=9次

    根据此图分析,A1稳坐第一名,D1最高排第四名,所以D2,D3,D4根本排不上号,直接淘汰,同理,C3,C4也轮不上,淘汰,B4也没资格,淘汰

    我们先把B1放在一边,让剩下的8个再比一次(现在是 8+1+1=10次),现在前四名还剩三个位置,需要把情况分为两种:

      1.前三为A2    A3    A4,那么因为B1未参赛不知道B1和他们三个谁更快,所以还要再进行一次比赛确定前三,才能确定最终的前四名(8+1+1+1=11次)

      2.前三不全是A2    A3    A4,也就是说前三名中有B2  B3  C1  C2  D1中的其中一个,只要有这几个中的任何一个就能确定B1在总前四,因为B1比它们都快,

       那么,如果这次比赛(是 8+1+1=10次)的第三名为B2,那么比B2快的有B1,在A1A2A3中最快的又是A1,所以总前四名已经得出,即:A1  B1  A2  B2,其中B1  A2不能确定谁更快,但已经无所谓了。如果第三名为C1情况也一样(此时前四中不可能有B2,因为B1比B2快),前四为A1  B1  A2  C1。

    所以最少要比赛10次才能决定前四名

  • 相关阅读:
    autofac meta
    RazorEngine 3.6.5.0
    pfx 转 snk
    git
    Nlog Layout
    NLog 传递参数
    扫描.net dll引用dll
    vbox android x86 分辨率
    Andriod x86 4,4
    .net cli 源码
  • 原文地址:https://www.cnblogs.com/wuyufei/p/11247467.html
Copyright © 2020-2023  润新知