主观

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

 设有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");

 }

}

参考答案
您可能感兴趣的试题

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

 设有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");

 }

}

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服