php - php中的锦标赛算法

标签 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 个玩家也能正常工作的算法。

谢谢

最佳答案

<?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";
}

关于php - php中的锦标赛算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3695264/

相关文章:

javascript - 长轮询 - jquery + php

PHP 和 MySQL 按日期和时间显示

php - MySQL - 将行合并为一

php - 这个按位 AND 运算符的目的是什么?

php - 如何获取数组中给定结果之前和之后的sql结果

algorithm - 特殊矩阵螺旋遍历中的第 K 个元素

java - 为空格分隔的单词实现分类器算法的问题

algorithm - 根据单个数字获取下一个整数

algorithm - 3x3 Sobel 算子和梯度特征

algorithm - 将 Big-O 递归算法简化为线性