每n-1天输入n和输出对的算法

时间:2016-03-29 23:07:28

标签: algorithm

划分和算法问题:每个玩家必须对每个n-1个对手玩一次,每天最多一场比赛表明,如果n是2的幂,则可以设计一个完全取得比赛的锦标赛n-1天。这样做是通过给出一个输入n的算法并输出n-1天中每一天的玩家配对列表?到目前为止我知道如果n必须超过2,我们使用类似于合并排序算法

1 个答案:

答案 0 :(得分:0)

d天(d范围从1n-1),播放器k(其中k的范围是{{1} }} 0}播放播放器n-1

关于此算法的一些简单事实:

  • 如果k xor d强大的是n21 <= d <= n-1,那么0 <= k <= n-1,那么函数0 <= k xor d <= n-1是来自玩家的有效函数和玩家的日子。
  • 没有玩家自己玩过,因为k, d -> k xor d暗示k xor d = k
  • 在任何一天,这都会产生配对,因为d = 0
  • 任何给定的玩家从不扮演同一个对手两次,因为k xor d xor d = k暗示k xor d = x xor d'

因此,每个玩家每天玩1个对手,并且在d = d'天内与每个对手完全匹配一次。

在代码中:

n-1