0:
#include <stdio.h>
#define MAX_NUM 64
int schedule[MAX_NUM+1][MAX_NUM+1];
int arrage(int begin, int num);
int arrage(int begin, int num)
{
int i, j;
if (num == 2){
schedule[begin][1] = begin;
schedule[begin][2] = begin + 1;
schedule[begin+1][1] = begin + 1;
schedule[begin+1][2] = begin;
return 0;
}
arrage(begin, num/2);
arrage(begin + num/2, num/2);
for (i = begin + num/2; i < begin + num; i++){
for (j = num/2 + 1; j <= num; j++){
schedule[i][j] = schedule[i-num/2][j-num/2];
}
}
for (i = begin; i < begin + num/2; i++){
for (j = num/2 + 1; j <= num; j++){
schedule[i][j] = schedule[i+num/2][j-num/2];
}
}
}
int main(void)
{
int num, i, j;
printf("请输入参赛队伍的数量: ");
scanf("%d", &num);
if (num & num - 1){
printf("队伍的个数必须是2的N次方");
return -1;
}
arrage(1, num);
printf("编 号");
for (i = 1; i < num; i++){
printf("\t第%d天",i);
}
putchar('\n');
for (i = 1; i <= num; i++){
for (j = 1; j <= num; j++){
printf("%3d\t",schedule[i][j]);
}
putchar('\n');
}
return 0;
}
1:
#include <stdio.h>
#define MAX_NUM 64
int schedule[MAX_NUM+1][MAX_NUM+1];
void getname(char name[][64], int num);
int arrange(int begin, int num);
void getname(char name[][64], int num)
{
int i;
for (i = 1; i <= num; i++){
printf("请输入第%d个队伍的名字: ", i);
scanf("%s", &name[i]);
}
}
int arrange(int begin, int num)
{
int i, j;
if (num == 2){
schedule[begin][1] = begin;
schedule[begin][2] = begin + 1;
schedule[begin+1][1] = begin + 1;
schedule[begin+1][2] = begin;
return 0;
}
arrange(begin, num/2);
arrange(begin + num/2, num/2);
for (i = begin; i < begin + num; i++){
for (j = num/2 + 1; j <= num; j++){
schedule[i][j] = schedule[i+num/2][j-num/2];
}
}
for (i = begin + num/2; i < begin + num; i++){
for (j = num/2 + 1; j <= num; j++){
schedule[i][j] = schedule[i-num/2][j-num/2];
}
}
}
int main(void)
{
int num, i, j;
printf("请输入参赛队伍的数量: ");
scanf("%d", &num);
if (num & num - 1 == 0){
printf("参赛队伍的数量必须是2的N次方!");
return -1;
}
char name[num+1][64];
getname(name, num);
arrange(1, num);
printf("编 号");
for (i = 1; i <= num; i++){
printf("第%d天", i);
}
putchar('\n');
for (i = 1; i <= num; i++){
for (j = 1; j <= num; j++){
printf("%s \t", name[schedule[i][j]]);
}
putchar('\n');
}
return 0;
}