php - PHP - 将团队均匀分布到数组中,这样就不会重复组合
问题描述
我有以下九支队伍参加一个活动:
array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I')
本次比赛每场比赛需要三支参赛队伍(即:A vs B vs C)。每支球队都需要和其他球队交手一次,而且只有一次。
对于上述九支球队,将有四轮比赛(每支球队每场比赛将与另外两支球队比赛,每支球队有八支球队比赛 - 8 / 2 = 4轮),总共四轮比赛共有十二场比赛(每轮有三场比赛,每场三支球队 - 4 轮 x 3 场比赛 = 12 场总比赛)。
我预期的输出格式是:
array('A', 'B', 'C')
array('D', 'E', 'F')
array('G', 'H', 'I')
etc...
以上将总共十二个数组。
您将如何将上述九支球队分布在十二个独立的阵列中(每个阵列代表一场比赛),以便每支球队与其他球队比赛一次且仅一次?
解决方案
这类问题属于设计理论。我认为在这种情况下,所谓的施泰纳系统 S(2,3,9)
123、456、789、147、258、369、159、267、348、168、249 和 357。
我从http://users.mct.open.ac.uk/mjg47/papers/IntroSteiner.pdf剪切和粘贴的地方,希望避免拼写错误。
(该理论是大量技巧和特殊情况的集合。我不知道总能找到答案并涵盖所有情况的通用算法)
推荐阅读
- assembly - “byte ptr X”作为 TASM 中的操作数?
- python - Pylab get_patch() 给出属性错误
- python - 根据同一行中的值提取单个值(熊猫)
- google-apps-script - 想添加电子邮件发送功能,以防我的临时工超过 8 个
- reactjs - 重定向到 Next.js 中的不同页面时如何触发硬刷新?
- python - 不和谐循环出错,通道发送
- php - Laravel Format AllDirectories() 输出到树中
- reactjs - 将 google 字体链接添加到样式化组件 createGlobalStyle
- python - Django SortedManyToManyField 不以反向关系保存顺序
- android-studio - Android Jetpack Compose 错误:不能使用提供的参数调用以下函数: