php中的锦标赛算法

时间:2010-09-12 14:56:11

标签: php algorithm

我需要一些帮助。我想创建一个锦标赛。假设我有6名球员。 1 2 3 4 5 6

我想创造一些..让'说'阶段......每个玩家将在5个不同的阶段玩5场比赛(球员数量 - 1)。在一个阶段,所有玩家必须只出现一次。

例如,有6名玩家,我想生成这些结果:

Squad 1:

1-2
3-4
5-6

Squad 2:

1-3
2-5
4-6

Squad 3:

1-4
2-6
3-5

Squad 4:

1-5
2-4
3-6

Squad 5:

1-6
2-3
4-5

因此,在每个阶段,比赛必须是唯一的,每个球员必须与每个球员一起比赛。

我想要一个算法,即使我想要8个玩家,或者12个,16个,或者28个,也可以使用。

由于

1 个答案:

答案 0 :(得分:3)

<?php
$numplayers = 6;
if ($numplayers % 2 != 0) $numplayers++; // Dummy

for ($round = 0;$round < $numplayers - 1;$round++) {
    echo 'Squad ' . ($round+1) . ":\n\n1-";

    for ($i = 0;$i < $numplayers-1;$i++) {
        if ($i % 2 == 0) {
            $player = ($numplayers-2) - ($i/2) - $round;
        } else {
            $player = ((($i-1)/2) - $round);
        }
        if ($player < 0) $player += $numplayers - 1;
        echo ($player+2);
        echo ($i % 2 == 0) ? "\n" : '-';
    }
    echo "\n\n";
}