首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从前一组相位生成单次消元轮的算法

从前一组相位生成单次消元轮的算法
EN

Stack Overflow用户
提问于 2021-11-18 17:56:38
回答 1查看 365关注 0票数 0

我的比赛有两个阶段,组+单淘汰赛。当组阶段结束时,每个组的x顶部进入单个消除阶段(括号格式)。在括号阶段有两个基本规则:

  • 是小组赛的冠军,不应该和另一组的冠军(只对第2或第3名)
  • 比赛,在同一组比赛的两支球队都不应该相提并论。

例如,如果我们有两个这样的小组:

代码语言:javascript
运行
复制
Group A -> 1ºA, 2ºA, 3ºA, 4ºA

Group B -> 1ºB, 2ºB, 3ºB, 4ºB

每个小组的所有队伍都在继续,淘汰赛应该是:

代码语言:javascript
运行
复制
1ºA vs 4ºB
2ºB vs 3ºA
1ºB vs 4ºA
2ºA vs 3ºB

我在寻找一种算法来帮助我按照这个顺序创建击倒。

为了澄清,另一个例子是:

如果我们有四个这样的小组:

代码语言:javascript
运行
复制
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

击倒应该是:

代码语言:javascript
运行
复制
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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-11-18 18:23:13

在PHP中,这很简单。您只需获得第二个数组的长度,并向后数键。请注意,在几乎任何语言中,根据语言的不同,逻辑将与细微的语法差异完全相同。JS、Python、PERL、Java等都应该看起来大致相同。

代码语言:javascript
运行
复制
<?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";
}

这应能产生以下结果:

代码语言:javascript
运行
复制
1-A  vs  4-B
2-A  vs  3-B
3-A  vs  2-B
4-A  vs  1-B
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70024580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档