1

我正在尝试编写一个程序,为一定数量的玩家创建一个循环锦标赛时间表(每个玩家都玩其他玩家)。
我想知道是否有办法只使用列表来做到这一点。我试图不使用 itertools.combinations()

如果我有一个允许您输入玩家数量并生成这些玩家列表的程序,任何人都可以想到一种方法吗?示例:4 个玩家生成列表 [1,2,3,4]

我需要程序打印:

第 1 轮:1 对 4 2 对 3

第 2 轮:1 对 3 4 对 2

第 3 轮:1 对 2 3 对 4

4

1 回答 1

2

这是此处描述的第一个算法的简单实现。

N = 6
a = range(N)
for i in xrange(N-1):
    print zip(a[:N/2], reversed(a[N/2:]))
    a = a[:1] + a[-1:] + a[1:-1]

编辑:实际上,正如所指出的,它甚至适用于奇数N

(ORIG:这只适用N于偶数。该链接解释了如何扩展它以支持奇数N。)

于 2013-03-12T20:51:57.487 回答