作者在 2011-11-12 20:36:11 发布以下内容
某学校举行乒乓球比赛,在初赛阶段设置为循环赛,设有n位选手参赛,初赛共进行n-1天,每位选手要与其他每一位选手进行一场比赛,然后按积分排名选拔进入决赛的选手。根据学校作息时间,要求每位选手每天必须比赛一场,不能轮空。按此要求为比赛安排具体日程,即决定每天各选手对阵的对手。(可考虑使用分治算法简化日程安排),用数学算法用C实现
#include "stdio.h"
#include "conio.h"
#define N 11
int main()
{ int i,r,k,j;
char a[N];
for(i=0;i<N;i++) /*输入,运动员*/
{printf("shu ru ");
a[i]=getchar();
while(getchar()!='\n');
}
#include "conio.h"
#define N 11
int main()
{ int i,r,k,j;
char a[N];
for(i=0;i<N;i++) /*输入,运动员*/
{printf("shu ru ");
a[i]=getchar();
while(getchar()!='\n');
}
if(N%2==0) /*检查人数单双*/
k=N/2;
else
k=(N/2)+1;
j=k;
for(r=1;r<=N-1;r++){
printf(" %d ",r); /*第 某 天*/
for(i=0;i<k;i++){
j+=i;
if((j)>9) if((j%=N)==i) j+=1;
printf("*%c %c*",a[i],a[j]);}
j++;
printf("\n"); }
getch();
return 0;
}
for(r=1;r<=N-1;r++){
printf(" %d ",r); /*第 某 天*/
for(i=0;i<k;i++){
j+=i;
if((j)>9) if((j%=N)==i) j+=1;
printf("*%c %c*",a[i],a[j]);}
j++;
printf("\n"); }
getch();
return 0;
}