现在,我们已经知道了怎样计算循环赛的比赛场次,那么怎样排出这种比赛的程序表,使每一队在每一轮比赛中都有不同的对手呢?让我们来看上文留下的题目,女子分成的三组中有一组是6个队,这6个队用单循环制进行比赛。用X表示球队的编号,X∈{1, 2,…,6},r表示比赛的轮数,r∈{1, 2,…,5},那么每一个队都要进行5轮比赛。
下面就是一张6个队的比赛程序表,在第r行、第x列处的数字y,代表x队在第r轮比赛中的对手。
这张表是怎样排出来的呢?
我们先介绍一个概念——“同余”。所谓同余,是指两个整数a、b被另一正整数m去除,有相同的余数,通常用符号:
a≡b(mod m)
表示,读做“a、b关于模m同余”。例如34与12被11除余数都是1,就称“34与12关于模11同余”。同余的概念早在公元5世纪时,在我国的《孙子算经》中已经出现。在日常生活中也经常会遇到,比如,某月2日是星期三,那么9日,16日,23日都是星期三,因为它们关于模7同余。
一般地,要排出有N个队参加的循环赛程序表,只需要第r(r=1,2,…,N-1)轮中取能满足x+y=r(modN-1)的y值就行了。
因此上例中,只要取能满足x+y被5除余数为r的Y值就行了。
先看第一轮比赛(r=1,x+y=6),于是有x=1,y=5;x=2, y=4。但是x=3时,y=3,这意味着第三队将与自己比赛,这当然是不可能的。为此,我们规定,在这种情况下,它与最后一队即第6队比赛。于是表中第一行排好了。
再看第二轮比赛(r=2, x+y=7),于是第二行可以毫不费力地排出来。
第三轮比赛(r=3, x+y=8),而x=1时,y=7,无此队,因而这种情况下,可改取x+y=r,则x=1,y=2; x=2,y=t。此后还是按照x+y=8,则当x=3, y=5; x=4时,y不可能为4,由上可知,取y=6。
用同样的方法,我们可以把上面列出的表排完。这样,如果参赛的队数是偶数,每一个队在每一轮比赛中都能有不同的对手。当然这并不是唯一的排法,而且如果参赛的队数是奇数,这种排法也就不适用了。