我最近研究了一些东西并与Donald Knuth见面了。但是我没有找到解决我的问题的正确算法。
问题 我们有一个由n个选手组成的联赛。每周他们会和另一个选手比赛。在n-1周内,每个团队都会对抗其他团队。每天有n/2场比赛。但是一支队伍一周只能比一次。如果我们生成一个(n/k)组合,我们就可以得到所有的组合...(假设k=2),但我需要按正确的顺序排列它们。
我的第一个建议不是最好的。我只是创建了一个数组,然后让计算机尝试找到正确的方式。如果找不到,则返回起点,洗牌数组并重新开始。嗯,我用PHP编写了它(n=8),输出结果没问题,但是需要很长时间,对于n=16,我还遇到了超时的情况。
因此,我想知道是否有算法,或者是否有任何涵盖这个问题的书籍。
这是我的代码: http://pastebin.com/Rfm4TquY