赛程安排
1 #include <stdio.h> 2 #define MAXN 64 3 int a[MAXN+1][MAXN+1]={0}; 4 void gamecal(int k,int n)//处理编号k开始的n个选手的日程 5 { 6 int i,j; 7 if(n==2) 8 { 9 a[k][1]=k; //参赛选手编号 10 a[k][2]=k+1; //对阵选手编号 11 a[k+1][1]=k+1; //参赛选手编号 12 a[k+1][2]=k; //对阵选手编号 13 }else{ 14 gamecal(k,n/2); 15 gamecal(k+n/2,n/2); 16 for(i=k;i<k+n/2;i++) //填充右上角 17 { 18 for(j=n/2+1;j<=n;j++) 19 { 20 a[i][j]=a[i+n/2][j-n/2]; 21 } 22 } 23 for(i=k+n/2;i<k+n;i++) //填充左下角 24 { 25 for(j=n/2+1;j<=n;j++) 26 { 27 a[i][j]=a[i-n/2][j-n/2]; 28 } 29 } 30 } 31 } 32 33 int main() 34 { 35 int m,i,j; 36 printf("输入参赛选手人数:"); 37 scanf("%d",&m); 38 j=2; 39 for(i=2;i<8;i++) 40 { 41 j=j*2; 42 if(j==m) break; 43 } 44 if(i>=8) 45 { 46 printf("参赛选手人数必须为2的整数次幂,且不超过64!\n"); 47 getch(); 48 return 0; 49 } 50 gamecal(1,m); 51 printf("\n编号 "); 52 for(i=2;i<=m;i++) 53 printf("%2d天 ",i-1); 54 printf("\n"); 55 for(i=1;i<=m;i++) 56 { 57 for(j=1;j<=m;j++) 58 printf("%4d ",a[i][j]); 59 printf("\n"); 60 } 61 getch(); 62 return 0; 63 }
时间: 2024-10-24 23:03:39