用C++编写循环赛日程表
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环赛日程表
问题描述:设有n位选手参加网球循环赛,n=2^k,循环赛共进行n-1天,每位选手要与其他n-1位选手比赛一场,且每位选手每天比赛一场,不能轮空,按一下要求为比赛安排日程,
(1)每位选手必须与其他n-1格选手格赛一场;
(2)每个选手每天只能赛一场;
(3)循环赛一共进行n-1天;
#include
int a[50][50];
void table (int x,int k)
//此函数为从x号球员起的共2的k次方名球员的安排日程表
{
int i,j,y=1;
if(k==1)//只有两名球员
{
a[x][0]=x;
a[x][1]=x+1;
a[x+1][0]=x+1;
a[x+1][1]=x;
}
else
{
for(i=1;i<=k-1;i++)
{y=y*2;}
table(x,k-1);
table(x+y,k-1);
for(i=x;i { for(j=y;j<2*y;j++) a[i][j]=a[i+y][j-y]; } for(i=x+y;i { for(j=y;j<2*y;j++) a[i][j]=a[i-y][j-y]; } } } void main() { int i,j,k; int n=1; cout<<"请输入k值"< cin>>k; for(i=1;i<=k;i++) {n=n*2;} cout<<"参赛人数"<<" "< cout<<"*****循环赛日程表****"< cout< cout<<"日期:"; for( i=1;i cout<<" "< cout< for(i=1;i { cout< for(j=1;j cout<<" "< } cout< } 执行结果如下: