题目内容 (请给出正确答案)
[主观题]

为参加网球比赛的选手安排比赛日程。 设有n(n=2k)位选手参加网球循环赛,循环赛共进行n-1天,每位选

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

设有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)位选手…”相关的问题

第1题

试题四阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[函数说明]函数Dele

试题四

阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。

[函数说明]

函数DeleteNode(Bitree *r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

typedef struct Tnode{

int data;

struct Tnode *Lchild,*Rchild;

}*Bitree;

在二叉查找树上删除一个结点时,要考虑三种情况:

1若待删除的结点p是叶子结点,则直接删除该结点;

2若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;

3若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述1、2情况之一。

[函数代码]

int DeleteNode(Bitree *r,int e) {

Bitreep = *r, pp, s, c;

while( (1) ) { /*从树根结点出发查找键值为e的结点*/

pp = p;

if ( e< p->data) p = p -> Lchild;

else p = p->Rchild;

}

if(!p) return –1; /* 查找失败 */

if(p->Lchild && p->Rchild) { /* 处理情况3 */

s = (2);pp = p;

while ( (3) ) { pp = s; s = s-> Rchild; }

p->data = s ->data; p = s;

}

/*处理情况1、2*/

if( (4) ) c = p -> Lchild;

elsec = p -> Rchild;

if(p == *r) *r = c;

elseif ( (5) ) pp -> Lchild = c;

elsepp->Rchild = c;

free(p);

return 0;

}

点击查看答案

第2题

试题二下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下

试题二

下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。

例如:

若输入 2 8 5 7 8 4 5 3 2 8

则应输出:

The max: 8

Total: 3 //最大数出现次数

The positions: 1 4 9

请补充下列空缺:

include<stdio.h>

include<conio.h>

define M 10

int fun(int *a, int *n, int pos[])

{int i, k,max=-32767;

(1)

for(i=0; i<M; i++)

if( (2) ) max=a[i];

for(i=0; i<M; i++)

if( (3) )pos[k++]=i;

*n=k;

return max;

}

main()

{int a[M], pos[M], i=0, j, n;

clrscr();

printf("Enter 10 number :");

for(i=0; i<M; i++)scanf("%d", (4));

j=fun( (5) );

printf("The max: %d\n", j);

printf("Total: %d",n);

printf("The position:");

for(i=0; i<n; i++ ) printf("%4d", pos[i]);

printf("\n");

}

点击查看答案

第3题

下面各程序段中,()能在一行中输出五个&39;*&39;A.I:=0;repeatwrite(&39;*&39;);I:=I+1until I=5B

下面各程序段中,()能在一行中输出五个&39;*&39;

A.I:=0;

repeat

write(&39;*&39;);

I:=I+1

until I=5

B.I:=0;

repleat

write(&39;*&39;)

until I=5

C.I:=0;

repeat

write(&39;*&39;);

I:=I-1

until I=5

D.I:=0;

repeat

writeln(&39;*&39;)

I:=I+2

until I=5

点击查看答案

第4题

在面向对象程序设计语言中,__是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重

用性,而且还有利于提高系统的可扩充性;消息传递可以实现发送一个通用的消息而调用不同的方法;

A.封装

B.消息传递

C.引用

D.继承

点击查看答案

第5题

在计算机系统的日常维护工作中,应当注意硬盘工作时不能__。另外,需要注意防范病毒,但是,ROM 是不

会被感染病毒的。

A.大声喧哗

B.有强烈震动

C.装入程序

D.有日光照射

点击查看答案

第6题

操作系统功能不包括__。A.提供用户操作界面B.管理系统资源C.提供应用程序接口D.提供HTML

操作系统功能不包括__。

A.提供用户操作界面

B.管理系统资源

C.提供应用程序接口

D.提供HTML

点击查看答案

第7题

阅读以下说明和C程序,回答问题。[说明] 下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列

阅读以下说明和C程序,回答问题。

[说明]

下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。

①在第一行的正中插入1。

②新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。

③若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。

例如,3阶魔方阵如下所示:

8 1 6

3 5 7

4 9 2

[C程序]

include<stdio.h>

include<stdlib.h>

define SIZE 50

main( )

{

int row, col, n, value;

int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/

printf("请输入要输出魔方阵的阶数n(奇数, <%d):n=", SIZE);

scanf("%d", &n);

if(!(n%2) || n<1 || (1) ){

printf("输入数据有误!\n");

exit(0);

}

row=1; col=(n+1)/2; value=1;

while(value<= (2) ) {

a[row][col]=value;

/*计算下一位置*/

if(value%n!=0){

row--; (3) ;

if(row<1)row=n;

if(col>n) (4) ;

}

else row++;

value= (5) ;

}

printf("\n%d阶魔方阵如下所示:\n\n", n);

for(row=1; row<=n; row++){

for(col=1; col<=n; col++)

printf("%5d", a[row][col]);

printf("\n");

}

}

点击查看答案

第8题

函数fib1、fib2求得菲波那契数列第n项(n>40)的速度并不相同,清指出速度慢的函数名,并简要说明原因

点击查看答案

第9题

从以下备选答案内为程序中(1)~(6)处空缺选择正确答案。 (1)~(6)备选答案:A.connectionB.closeC.re

从以下备选答案内为程序中(1)~(6)处空缺选择正确答案。

(1)~(6)备选答案:

A.connection

B.close

C.recordset

D.command

E.Open F. RunG.ExecuteH.DimI.MapPathJ.redirect K.ConnectionString

点击查看答案

第10题

不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) ①sq=sh;②sh=tr;③tr=

不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)

①sq=sh;②sh=tr;③tr=sq;④sq=tr;⑤sh=sq。

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信