循环赛程问题
有N个运动员进行单循环赛,即每个运动员要和所有其他运动员进行一次比赛。将运动员从1到N编号。只考虑次幂的情况,即N=2^k
试用分治法为这N个运动员安排比赛日程。
(1)每个运动员要和其他N-1个运动员进行一次比赛
(2)要求每个运动员每天只进行一场比赛。
(3)且整个赛程在N -1天内结束。
#include<iostream>
using namespace std;
#define MAX 50
int table[MAX][MAX];
void fillTable(int x, int y, int step)
{
if(step==1)
return;
step /= 2;
fillTable(x,y,step); //填写左上的表格
fillTable(x+step,y,step); //填写左下的表格
for(int i=0; i<step; i++)
for(int j=0; j<step; j++){
table[x+step+i][y+step+j] = table[x+i][y+j];