我的比赛有两个阶段,组+单淘汰赛。当组阶段结束时,每个组的x顶部进入单个消除阶段(括号格式)。在括号阶段有两个基本规则:
例如,如果我们有两个这样的小组:
Group A -> 1ºA, 2ºA, 3ºA, 4ºA
Group B -> 1ºB, 2ºB, 3ºB, 4ºB每个小组的所有队伍都在继续,淘汰赛应该是:
1ºA vs 4ºB
2ºB vs 3ºA
1ºB vs 4ºA
2ºA vs 3ºB我在寻找一种算法来帮助我按照这个顺序创建击倒。
为了澄清,另一个例子是:
如果我们有四个这样的小组:
Group A -> 1ºA, 2ºA, 3ºA, 4ºA
Group B -> 1ºB, 2ºB, 3ºB, 4ºB
Group C -> 1ºC, 2ºC, 3ºC, 4ºC
Group D -> 1ºD, 2ºD, 3ºD, 4ºD击倒应该是:
1ºA vs 4ºD
2ºB vs 3ºC
1ºC vs 4ºB
2ºD vs 3ºA
1ºB vs 4ºC
2ºA vs 3ºD
1ºD vs 4ºA
2ºC vs 3ºB谢谢。
发布于 2021-11-18 18:23:13
在PHP中,这很简单。您只需获得第二个数组的长度,并向后数键。请注意,在几乎任何语言中,根据语言的不同,逻辑将与细微的语法差异完全相同。JS、Python、PERL、Java等都应该看起来大致相同。
<?php
$group_a = array();
$group_a[0] = '1';
$group_a[1] = '2';
$group_a[2] = '3';
$group_a[3] = '4';
$group_b = array();
$group_b[0] = '1';
$group_b[1] = '2';
$group_b[2] = '3';
$group_b[3] = '4';
// If team counts don't match, stop program
if ( count($group_a) != count($group_b) ){
die("Group team counts do not match");
}
// Set key to group b array count
$group_b_key = count($group_b);
foreach($group_a as $item){
// count backward from 4 ( 4-1 = 3 )
$group_b_key --;
echo "$item-A vs " . $group_b[$group_b_key] . "-B\n";
}这应能产生以下结果:
1-A vs 4-B
2-A vs 3-B
3-A vs 2-B
4-A vs 1-Bhttps://stackoverflow.com/questions/70024580
复制相似问题