计算足球比赛组合而不重复

时间:2018-01-23 11:56:44

标签: php arrays math

所以,我有一个像这样的数组,充满了团队:

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'));
}

2 个答案:

答案 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进行计算