循环赛问题,急用,100分,绝对信誉!!!
有n个队伍(1-n),参加比赛,比赛时间不能超过n天,每支队伍每天只能参加一次比赛.每两支队伍之间仅比一次,请设计一个赛程表!
比如和世界杯32强出线以后.............
问题点数:0、回复次数:4Top
1 楼carbon107(<软件开发思想.h>)回复于 2003-11-02 13:48:20 得分 0
离散数学图论的问题Top
2 楼bmj(我要找女朋友)回复于 2003-11-02 16:36:05 得分 0
如果不是淘汰赛的话,用递归来做是比较好实现的,不过我说的只对2的n次方个队伍有效。
先将队伍分为a.b两组,然后a组中的每个队都跟b组中的每个队比赛一场。然后a组和b组各自在分为两半,按照前面的方法进行比赛。直到最后分到每个组中只有一个队。注:这种算法只适用于队伍数目为2的n次方的时候,如果为别的数目,我还没有想到一个比较高效好的算法,也在期待中!
Top
3 楼cyj2008(cyj)回复于 2003-11-02 17:11:08 得分 0
carbon107(<软件开发思想.h>) 说的很对!!Top
4 楼cmsbai(小白)回复于 2003-11-02 21:05:34 得分 0
如果不考虑时间复杂度,可以用遍历:
为每个队i设置一个标志:flag[i]和前i天和哪些队安排了比赛team[i],表示当天是不是已有比赛。对每一天进行如下操作:flag[]=0;
当有多于一个队没有比赛时,就为其安排一组比赛,flag[i]=1;flag[j]=1(J是I的对手);
时间复杂度为:O(n^3)
Top




