循环赛日程表
1 //2^n个运动员 2 #include<stdio.h> 3 int a[100][100]; 4 int n; 5 6 void fun(int n) 7 { 8 int u,v,j,i; 9 if(n==0) a[n][n]=1; 10 else 11 { 12 fun(n-1); 13 u=1<<(n-1); 14 v=1<<n; 15 for(i=0;i<u;i++) 16 for(j=u;j<v;j++) 17 a[i][j]=a[i][j-u]+u; 18 for(i=u;i<v;i++) 19 for(j=0;j<u;j++) 20 a[i][j]=a[i-u][j+u]; 21 for(i=u;i<v;i++) 22 for(j=u;j<v;j++) 23 a[i][j]=a[i-u][j-u]; 24 } 25 } 26 27 int main( ) 28 { 29 int i,j; 30 while(scanf("%d",&n),n) 31 { 32 fun(n); 33 for(i=0;i<(1<<n);i++) 34 { 35 for(j=0;j<(1<<n);j++) 36 printf("%d ",a[i][j]); 37 printf("\n"); 38 } 39 } 40 return 0; 41 } 42 43