递归--循环日程表问题

来源:互联网 发布:推荐几个精仿的淘宝店 编辑:程序博客网 时间:2024/06/12 01:31
#include<stdio.h>#include<math.h>#include<string>#define MAX 1024int a[MAX][MAX];void schedule(int a[][1024],int k);void main(){int k;scanf("%d",&k);    memset(a,0,sizeof(a[0][0]));schedule(a,k);for(int i=0;i<(int)pow(2,k);i++){for(int j=0;j<pow(2,k);j++)printf("%-3d ",a[i][j]);printf("\n");}}void schedule(int a[][MAX],int k){if(k==1){a[0][0]=1;a[0][1]=2;a[1][0]=2;a[1][1]=1;}if(k>1){schedule(a,k-1);    int increment=pow(2,k-1);     for(int i=0;i<pow(2,k-1);i++)    for(int j=0;j<pow(2,k-1);j++){   a[i+increment][j+increment]=a[i][j];   a[i][j+increment]=a[i][j]+increment;       a[i+increment][j]=a[i][j]+increment;}}}


解决日程安排问题:要求一场比赛中,每个选手都要和其他选手进行一场比赛,要求每天只能进行一场比赛

下面程序的输出结果是,第i行j列表示第i个选手第j天遇到的对手。