所以,我有一个像这样的数组,充满了团队:
array(0, 1, 2, 3, 4, 5, ...)
在每场锦标赛中,我们都有TotalNumberOfTeams-1
轮次(日期)与比赛。 (第一圈)
在每一轮比赛中,我们都有TotalNumberOfTeams/2
场比赛。 (2循环)
如何计算此结果的组合:
Date Date Date Date Date
Match: 0-1 0-2 0-3 0-4 0-5
Match: 2-3 1-5 1-4 1-3 1-2
Match: 4-5 3-4 2-5 2-4 3-5
/ w常用词:每个团队每轮都有不同的团队
计算轮次,比赛和日期的代码:
// Rounds
for($i=1; $i <= ($teamsNum - 1); $i++) {
// Matches
for($z=0; $z < ($teamsNum / 2); $z++){
//some code here
}
// Calculate next date
$mdate = date('Y-m-d', strtotime($mdate. ' + x days'));
}
答案 0 :(得分:2)
使用round-robin tournament algorithm。
简而言之:
制作两行命令,每个top命令与相应的命令形式下行一起播放。我的数字是奇数,一个命令休息。
以循环方式移除所有命令除第一个
0 1
2 3
=====
0 2
3 1
====
0 3
1 2
答案 1 :(得分:1)
代码示例有一个答案 - http://rosettacode.org/wiki/Combinations#php
只需使用$ k = 2进行计算