循环赛日程表问题
//循环赛日程表
#include<stdio.h>
#include<stdlib.h>
#define n 8
//k一次处理几行,i第几列,index第几行
int a[n][n];
int p,q,j;
int main(){
int index=1,k=1,i;
for( i=0;i<n;i++){
a[0][i]=i+1;
}
while(k<n){
int direction=1,i=0;
while(i<n){
for(p=index;p<index+k;p++) //最后一行都是前边一行处理k行得到的
for(q=i;q<i+k;q++){
a[p][q]=a[p-k][q+k*direction];
}
direction*=-1;
i+=k;
}
index+=k;
k=k*2;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d",a[i][j]);
}
putchar('\n');
}
return 0;
}