【发布时间】:2015-12-29 08:24:04
【问题描述】:
创建联赛日程安排软件并有一个数学问题,我需要一些帮助来解决我的问题。
假设您有 4 个团队(为简单起见)并检查 1、2、3、4 的所有可能排列。此排列仅称为第一周,它为您提供 24 种可能的排列。
1,2,3,4 是一个排列,说第 1 周 1X4 是一场比赛 2X3 是一场比赛。 第二周的比赛组合是通过循环赛设置的,所以接下来是 4,1,2,3; 4X3 1X2 是游戏。
我的问题是,如果第二周的游戏组合不起作用(由于限制),而是 3、4、1、2 的顺序会起作用,是否可以通过在第 1 周执行排列来检查?即第 1 周是 1,2,3,4 第 2 周是 3,4,1,2
或者我是否需要置换第 1 周,然后置换第 2 周,依此类推,以实际获得所有可能的时间表。我的直觉告诉我,我确实需要每周进行一次置换,以便真正获得时间表的所有可能排列。
编辑: 我问如果有四个星期,我的排列计算器会是 24*24*24*24 而不仅仅是 24。
【问题讨论】:
-
有什么理由不计算所有排列,而是将它们放在一个数组中,并删除那些不通过额外约束的排列?其余的我不太明白你的问题。
-
是的,在 11 个团队中,您正在查看大约 3900 万个排列是不可行的。
-
您需要安排多少周?
-
11 周。基本上我置换,测试,添加如果它通过,如果不重复就扔掉它。我的问题集中在我是否应该置换测试第 1 周置换第 2 周测试等,还是只置换一次并从那里开始
-
如果 A-B 游戏在第 1 周进行,那么 B-A 是否可以被选择在第 2 周进行,或者轮流被视为同一游戏,并且被排除在可能性之外,或者是约束的一部分测试?
标签: java algorithm permutation