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

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

}

}

相关热点: 日程表   循环赛  

查看答案

相关问题推荐

  • 为有效进行需求调研,需要与调研对象沟通,并在此基础上共同确定()

    A、调研周期

    B、调研日程表

    C、调研的准备时间

    D、提交调研报告的时间

    查看答案
  • 世界最大规模的定向赛事是()

    A、O-Ringen

    B、Jukola

    C、Tio-mila

    D、世界公园定向循环赛

    查看答案
  • 教育方针的特点主要包括
    查看答案
  • 全面建设社会主义现代化国家,最艰巨最繁重的任务仍然在()
    查看答案
  • 张三为自己投保意外伤害保险,保额10万,张三确定李四为受益人.如果张三因意外伤害死亡后,赔款10万元应支付给()
    A.
    张三的配偶
    B.
    张三的子女
    C.
    李四
    D.
    张三的父母
    查看答案
  • 设备监理阶段可分为()、安装调试阶段、试运行阶段监理
    查看答案
  • 关于基金风险指标的计算
    查看答案
  • 惜芳时诗词简繁体_译文_作者_创作背景
    查看文章
  • 愁怀诗词简繁体_译文_作者_创作背景
    查看文章
  • 悼志首座诗词简繁体_译文_作者_创作背景
    查看文章
  • 悼陆廷臣诗词简繁体_译文_作者_创作背景
    查看文章
  • 悼深居迪元师兄诗词简繁体_译文_作者_创作背景
    查看文章
  • 惟学王孙以诗求序其鼓枻稿答之诗词简繁体_译文_作者_创作背景
    查看文章