首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中查找所有可能的配对的最快方法是什么?

在列表中查找所有可能的配对的最快方法是什么?
EN

Stack Overflow用户
提问于 2011-02-19 02:28:36
回答 4查看 3.3K关注 0票数 3

基本上我有一个玩家列表,我想把它们配对,这样每个玩家就可以和每个人玩一次。查找此数据的最快方法是什么?

EN

Stack Overflow用户

发布于 2011-02-19 02:41:19

一个简单的分而治之的算法:

  1. If只有两个人:将它们配对并返回them.
  2. Otherwise:

代码语言:javascript
运行
复制
1. Split the group in two groups of equal size. 
2. Find all pairings in each group using this algorithm recursively.
3. Join the two lists.

例如,[[(a,b)]][[(c,d)]]变成了[[(a,b),(c,d)]]

4.通过轮换第二组,找出两组之间的配对。

例如,[[(a,c),(b,d)],[(a,d),(b,c)]]

5.返回(3) + (4)

该算法在O(n^2)时间内运行,这是最优的,因为它生成(n-1)轮的n/2配对。

对于8个玩家,你将得到7个回合:

代码语言:javascript
运行
复制
[(a,b), (c,d), (e,f), (g,h)]
[(a,c), (b,d), (e,g), (f,h)]
[(a,d), (b,c), (e,h), (f,g)]
[(a,e), (b,f), (c,g), (e,h)]
[(a,f), (b,g), (c,h), (e,e)]
[(a,g), (b,h), (c,e), (e,f)]
[(a,h), (b,e), (c,f), (e,g)]
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5045137

复制
相关文章

相似问题

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