网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

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

设有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 64int 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名选手参加,每位选手都与其他选手恰好比赛一局。每局比赛胜者得2分,负者得0分,平局两位选手各得l分。今有四位同学统计了全部选手的得分总和,分别是238,239,240,242,经核实只有一位同学的统计数据是正确的,正确的数据是( )。 A.238 B.239 C.240 D.242

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

考题 阅读下列函数说明和C代码,将应填入(n)外的字句写在对应栏内。[说明]为网球比赛的选手安排比赛日程。设有n(n=2m)位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手赛一场,且每位选手每天赛一场,不轮空。设n位选手被顺序编号为1,2,…,n,比赛的日程表是一个n行n-1列的表,第i行j列的内容是第i号选手第j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2m-1位)的比赛日程导出全体2m选手的比赛日程。从众所周知的只有两位选手的比赛日程出发,反复这个过程,直至为n位选手安排好比赛日程为止。如两位选手比赛日程表如下所示:如四位选手比赛日程表如下所示:函数中使用的预定义符号如下:define M 64int a[M+1][M];[函数]voidd main(){int twoml,twom,i,j,m,k;printf("指定n(=2的k次幂)位选手,请输入k:\n");scanf("%d",&k);/*8预设两位选手的比赛日程*/a[1][1] =2;a[2][1] =1;m=1;twoml=1;while ( (1) ){m++;twoml+=twoml;twom=twoml*2;/*为2^m位选手安排比赛日程*//*填日程表的左下角*/for(i=twoml+1; (2) ;i++){for(j=1; j=twoml-1; j++){a[i][j]=a[i-twoml][j]+twoml;}}/*填日程表的右上角*/a[1][twoml]= (3) ;/+填日程表右上角的第1列*/for(i=2; i=twoml; i++){a[i][twoml]=a[i-1][twoml]+1;}/*填日程表右上角的其他列,参照前一列填当前列*/for(j=twoml+1; j(twom;j++){for(i=1; i a[i][j]= (4) ;}a[twoml][j]=a[1][j-1];}/*填日程表的右下角*/for(j=twoml; j for(i=1;i=twoml; i++){a[ (5) [j]=i;}}/*输出日程表*/for(i=1; i=twom; i++){for(j=1;j printf("%4d",a[i][j]);}printf("\n");}printf("\n");}}(1)

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

考题 某单位举行象棋比赛,计分规则为:赢者得2分,负者得0分,平局各得1分,每位选手与其他选手各下一局。已知男选手数是女选手的10倍,而得分是女选手的4.5倍,则参加比赛的男选手数是A.40人 B.30人 C.20人 D.10人

考题 某单位组织的羽毛球男单比赛共有48名选手报名参加,比赛采用淘汰赛制,在比赛中负一场的选手即被淘汰,直至决出最后的冠军。如每名选手每天最多参加一场比赛,则比赛至少需要举行几天? A.4 B.5 C.6 D.7

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

考题 在网球双打比赛中,选手AB对CD,A选手首先发球,C选手选择接发球,那么在第二局比赛开始时,由()先发球,()接发球。A.选手C先发球,选手A接发球B.选手D先发球,选手B接发球C.选手A先发球,选手C接发球D.选手B先发球,选手D接发球

考题 5.在有n个选手参加的单循环赛中,总共将进行()场比赛。