循环赛日程表问题

问题描述:

设有n(n = 2^k)位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空。试按此要求为比赛安排日程:

  1. 每个选手必须与其他n-1个选手各赛一场;
  2. 每个选手一天只能赛一场;
  3. 循环赛一共进行n-1天。
idea: Divide and conquer

源码如下:
#include 
#include 
#include    //定义了宏assert
#define  MAXSIZE  100



void mainlineCopy(int A[][MAXSIZE],int playerNum,int row,int column){

	int i,j;
	if (playerNum==1)  return ;

	mainlineCopy(A,playerNum/2,row,column);
	mainlineCopy(A,playerNum/2,row,column+playerNum/2);

	for(i=row;i0&&index<=5); //不在0到5之间时 显示错误信息 并终止程序运行

	for( j=1;j<=index;j++)
		playerNum*=2;
	for( i=0;i

你可能感兴趣的:(算法至上)