求排赛程表的算法

Isaf 2007-09-05 10:59:27
加精
比如有1,2,3,4,5,6,7,8支球队要打单循环联赛,怎么安排他们的赛程啊?
我自己写了一个算法,但只支持2的n次方支球队。看样子好像要用分治法,但具体怎么分有哪个大虾可以说说吗?
这么经典的一个算法为什么CSDN对它的讨论这么少啊,晕~~
...全文
441 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSU305 2008-05-16
  • 打赏
  • 举报
回复
(1).可以首先把比赛的队伍两俩分组
(2).在每个分组中进行比赛,
(3)把每组中的胜利者再进行两俩分组,
(4)重复上面的过程知道只剩一个,则为胜利者
Isaf 2007-09-11
  • 打赏
  • 举报
回复
嗯,果然厉害
xuelong_zl 2007-09-10
  • 打赏
  • 举报
回复
这个思路第一次看到,学习一下
galois_godel 2007-09-09
  • 打赏
  • 举报
回复

证明也比较明显:
对于第i(0<i<n)队,他在第xn轮和第n队比赛,这里xn=2*i%(n-1)唯一决定,在第xj轮和第j队比赛,这里xj=(i+j)%(n-1)也是唯一决定,所以其在n-1轮和各队都比了一次,对于第n队,对任意i(0<i<n),在前n-1轮中都和他比了一次,他显然也和各队分别交手一次。
galois_godel 2007-09-09
  • 打赏
  • 举报
回复


如果,n是奇数的话,先设一只队伍n+1,每轮和这个虚设的队伍比赛的队伍就是轮

空,所以,我们下面假设n为偶数,
然后,设n个队伍编号分别是1,2,3,...,n,
在第k(1<=k<=n-1)轮,如果1<=i,j<=n-1, i<>j, (i+j-k)%(n-1)=0的,则第i队和

第j队比赛,第n队与由方程(2*x-k)%(n-1)=0决定的队伍x比赛。
可以证明,这样可以得到排法符合单循环规则。


举个例子,有5个队伍
第1轮 1-5 2-4 3-x
第2轮 1-x 2-5 3-4
第3轮 1-2 3-5 4-x
第4轮 1-3 2-x 4-5
第5轮 1-4 2-3 5-x
x是虚设队,就是碰上表示轮空

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧