如果我们有四支球队,我们可以写出所有可能的匹配排列是这样的:
(1, 1) (1, 2) (1, 3) (1, 4)
(2, 1) (2, 2) (2, 3) (2, 4)
(3, 1) (3, 2) (3, 3) (3, 4)
(4, 1) (4, 2) (4, 3) (4, 4)
你可以看到在对角线镜像重复。
我用下面的代码输出上面:
for($i=1; $i<5; $i++) {
for($j=1; $j<5; $j++) {
echo "($i, $j) ";
}
echo "\n";
}
如果我们只关心楹联其中$ i小于附加$ J。或者,在$ i大于$ j的情况下,我们删除重复项和对角线本身(球队自己的位置)。
function team_combinations($no_teams) {
$combinations = array();
for($i=1; $i<=$no_teams; $i++) {
for($j=1; $j<=$no_teams; $j++) {
if($i < $j)
$combinations[] = array($i, $j);
}
}
return $combinations;
}
var_export(team_combinations(4));
输出:
array (
0 =>
array (
0 => 1,
1 => 2,
),
1 =>
array (
0 => 1,
1 => 3,
),
2 =>
array (
0 => 1,
1 => 4,
),
3 =>
array (
0 => 2,
1 => 3,
),
4 =>
array (
0 => 2,
1 => 4,
),
5 =>
array (
0 => 3,
1 => 4,
),
)
你需要根据您的条件创建数组排列的算法? –
8支队伍(队伍#0....'队伍#7'),7天('#1'..'day#7')。如果'A xor B = D',则#队'#'在#日'#队'上进行比赛# –
@EgorSkriptunoff这真是太棒了。做一个答案。 –