[主观题]

为参加网球比赛的选手安排比赛日程。

设有n(n=2k)位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手赛一场,且每位选手每天赛一场,不轮空。试按此要求为比赛安排日程。

设n位选手被顺序编号为1,2,…,n。比赛的日程表是一个n行n-1列的表,i行j列的内容是第i号选手第j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2m-1位)的比赛曰程,导出全体(2m位)选手的比赛日程。从只有2位选手的比赛日程出发,反复这个过程,直到为n位选手安排好比赛日程为止。

[C函数]

include<stdio.h>

define MAXN 64

int a[MAxN+1][MAXN];

void main()

{ int twoml,twom,il,j,m,k;

printf("指定n(n=2的k次幂)位选手,清输入k。/n");

scanf("%d",&k);

a[1][1]=2; /*预设2位选手的比赛日程*/

a[2][1]=1;

m=1;twoml=1;

while(m<k){(1) ;

twoml+=twoml; /*为2m位选手安排比赛日程*/(2) ;

/*填日程表的左下角*/

for(il=twoml+l;il<=twom;i1++)

for(j=1;j<=twoml-1; j++)

a[i1][J]=a[i1-twoml][j]+twoml;(3) ;

for(i1=2;i1<=twom;i1++)a[i1][twoml]=a[i1-1][twom1]+l;

for(j=twoml+1;j<twom;j++){

for(i1=1;i1<twoml;i1++) a[i1][j]=a[i1+1][j-1];(4) ;

}

/*填日程表的右下角*/

for(j=twoml;j<twom;j++)

for(ii=i;i1<=twoml;i1++)(5) ;

for(i1=1;i1<=twom;i1++){

for(j=1;J<twom;j++)

printf("%4d",a[i1][J]);

printf("/n");

}

printf("/n");

}

}

参考答案与解析:

相关试题

有8位选手参加跳远比赛,则每人有几次试跳机会()

[单选题]有8位选手参加跳远比赛,则每人有几次试跳机会()A .三次B .四次C .五次D .六次

  • 查看答案
  • 中国的体育舞蹈锦标赛从()年开始举办,每年都有上千对选手参加比赛。

    [单选题]中国的体育舞蹈锦标赛从()年开始举办,每年都有上千对选手参加比赛。A .1991B .1992C .1993

  • 查看答案
  • :有l0名选手参加一次棋类比赛,每个人都要和其他选手赛一盘,共要赛多少盘?( )

    [单选题]:有l0名选手参加一次棋类比赛,每个人都要和其他选手赛一盘,共要赛多少盘?( )。A.45B.46C.47D.48

  • 查看答案
  • 循环赛团体赛比赛积分()。

    [单选题]循环赛团体赛比赛积分()。A .胜一场球得2分B .胜一场球得1分C .胜一场球得1分

  • 查看答案
  • 在全市乒乓球比赛中,参加比赛的队伍进行单循环赛,一共赛了28场,问共有几个队参加比赛?(  )

    [单选题]在全市乒乓球比赛中,参加比赛的队伍进行单循环赛,一共赛了28场,问共有几个队参加比赛?(  )A.6B.7C.8D.9

  • 查看答案
  • 八名运动员参加单循环网球比赛的总场数是28场,需要比赛()轮次。

    [填空题] 八名运动员参加单循环网球比赛的总场数是28场,需要比赛()轮次。

  • 查看答案
  • 大师杯年终总决赛是世界排名前()名的选手参加的比赛。

    [单选题]大师杯年终总决赛是世界排名前()名的选手参加的比赛。A .6B .8C .10D .12

  • 查看答案
  • 参加摩登舞和拉丁舞比赛的选手可以兼项参加社交舞项目的比赛。

    [判断题] 参加摩登舞和拉丁舞比赛的选手可以兼项参加社交舞项目的比赛。A . 正确B . 错误

  • 查看答案
  • 有五支篮球队参加比赛,若采用单循环赛制,则共有()场比赛。

    [单选题]有五支篮球队参加比赛,若采用单循环赛制,则共有()场比赛。A . 10B . 12C . 15D . 20

  • 查看答案
  • 9人参加单循环赛,其轮数为()

    [单选题]9人参加单循环赛,其轮数为()A . 6B . 7C . 8D . 9

  • 查看答案
  • 为参加网球比赛的选手安排比赛日程。 设有n(n=2k)位选手参加网球循环赛,循环