如果我們有四支球隊,我們可以寫出所有可能的匹配排列是這樣的:
(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這真是太棒了。做一個答案。 –