首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有任何算法使循环调度具有每一轮唯一的组合?

是否有任何算法使循环调度具有每一轮唯一的组合?
EN

Stack Overflow用户
提问于 2019-06-24 06:28:50
回答 1查看 417关注 0票数 0

假设我有10个参与者,1,2,3,4,5,6,7,8,9,10

假设一个联盟,因为有10个参与者,所以每个参与者将有9场比赛与其他9名参与者。

因此,将有9轮比赛,每个参与者都有一场比赛。例如-

第1轮: 1-2、3-4、5-6、7-8、9-10任何参加者不得重复

第2轮:第1-3、2-4、5-7、8-9、6-10无重复

以此类推。

那里有数学算法解/模式吗?

如果可能的话,我想避免数组推送/pop方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 06:34:33

是的,有相当简单的算法来生成所有可能的对((N-1)*N/2)

将物品放入两行。

在每一轮比赛中,从上排开始的每一轮选手都要与下排的相应选手一起比赛。

修第一个。

以循环的方式转移所有其他人。

请注意,您可以使用数组的索引,而不是更改其内容

代码语言:javascript
运行
复制
A  B
D  C
pairs A-D, B-C

A  D
C  B
pairs A-C, D-B

A  C
B  D
pairs A-B, C-D

我在PHP (意为)中的简单实现输出播放器的索引:

代码语言:javascript
运行
复制
function GenPairs($N) {
    for ($i=0; $i<$N-1;$i++){
        echo(0).":";
        echo($N - 1 - $i)."\n";
        for ($j=1; $j<$N/2;$j++){
            echo(1 + (($N - $i + $j - 2) % ($N - 1))).":";
            echo(1 + ((2*$N - $i - $j - 3) % ($N - 1)))."\n";
        }
            echo("\n");
    }
}    


GenPairs(6);

0:5
1:4
2:3

0:4
5:3
1:2

0:3
4:2
5:1

0:2
3:1
4:5

0:1
2:5
3:4
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56730923

复制
相关文章

相似问题

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