我正在用 C# 编写一个 NFL 足球模拟器小部件以在后台运行并向我显示模拟游戏和比分等等。虽然正常的 NFL 有 32 支球队,但我在 2 个新部门中又增加了 8 支球队,现在我正在尝试编写时间表生成器。幸运的是,我已经能够为每个团队生成一组有效的对决,现在我只是想安排它。幸运的是,至此,我可以更简单地表达问题了。
我的目标听起来很简单:
就是这样,没有进一步的限制。但它并不像听起来那么简单。通常,我们可能会使用 40 支球队中的 38 支,在一排的 20 个位置中填满 19 个,但剩下的 2 支球队从不互相比赛。
我确实看过一些循环赛算法,但他们似乎假设每支球队都会与其他球队比赛。
如何填充我的 20x16 网格,使每一行的所有 40 个团队恰好出现一次?
或:
考虑到一个赛季中发生的所有比赛,我如何生成 NFL 赛程表,以便所有球队每周比赛,没有球队在同一周比赛两次?