循环赛日程表 (C++)
#include "iostream.h"
#include "math.h"
int array[100][100];
output( int k)
{
cout<<"\n循环赛日程表为 "<<endl;
for(int z=1;z<=pow(2,k);z++)
{for(int m=1;m<=pow(2,k);m++)
cout<<array[z]<<"\t";
cout<<endl;
}
}
void ttt(int k, int array[100][100] )
{
int n=1;
for(int i=1;i<=k;i++)
n*=2;
for(int p=1;p<=n;p++)
array[1][p]=p;
int m=1;
for(int s=1;s<=k;s++)
{ n/=2;
for(int t=1;t<=n;t++)
for(int a=m+1;a<=2*m; a++)
for(int b=m+1;b<=2*m;b++)
{
array[a][b+(t-1)*m*2]=array[a-m][b+(t-1)*m*2-m];
array[a][ b+(t-1)*m*2-m]=array[a-m][b+(t-1)*m*2];
}
m*=2;
}
}
void main()
{int k;
cout<<"输入k的数值(比赛人数为 2^k)\n"<<endl;
cin>>k;
ttt(k,array);
output(k );
}