#include<stdio.h>
#include<math.h>
#define N 50
void GameTable(int k,int array[][N]);
void print(int k,int array[][N]);
main()
{
int k;
int array[N][N];
do
{
scanf("%d",&k);
if(k!=0)
{
GameTable(k,array);
print(k,array);
}
else
printf("您输入的数据有误,请重新输入");
}while(k!=0);
}
void GameTable(int k,int array[][N])
{
int i,j,s,t;
int n=1;
for(i=1;i<=k;i++)
n*=2;
for(i=1;i<=n;i++)
array[1][i]=i;
int m=1;
for(s=1;s<=k;s++)
{
n=n/2;
for(t=1;t<=n;t++)
for(i=m+1;i<=2*m;i++)
for(j=m+1;j<=2*m;j++)
{
array[i][j+(t-1)*m*2]=array[i-m][j+(t-1)*m*2-m];
array[i][j+(t-1)*m*2-m]=array[i-m][j+(t-1)*m*2];
}
m*=2;
}
}
void print(int k,int array[][N])
{
int i,j;
int num=pow(2,k);
printf("%d人的循环赛日程表如下\n",num);
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
printf("%d\t",array[i][j]);
}
printf("\n");
}
}
0