资源简介
设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次。(2)每个选手一天只能比赛一次。
(3)循环赛一共需要进行n-1天。用分治法实现
代码片段和文件信息
#include
#include
using namespace std;
void Round_Robin_Calendar(int kint nint **a)
{
int ijs;
for(i=1; i<=n; i++)
a[1][i]=i;
int m = 1;
for(s=1; s<=k; s++)
{
n/=2;
for(int t=1; t<=n; t++)
for(i= m+1; i<=2*m; i++)
for(int j=m+1; j<=2*m; j++)
{
a[i][j+(t-1)*m*2] = a[i-m][j+(t-1)*m*2-m];
a[i][j+(t-1)*m*2-m] = a[i-m][j+(t-1)*m*2];
}
m *= 2;
}
}
void output(int **aint n)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cout< }
cout< }
}
int main()
{
int k;
cout<<“请输入k值:“;
cin>>k;
int n=1;
for(int i=1; i<=k; i++)
n*=2;
cout<<“参赛人数为“< int **a= new int *[n+1];
for(int i=0; i<=n; i++)
{
a[i]= new int[n+1];
}
Round_Robin_Calendar(kna);
cout<<“循环赛事日程表为:“< cout<<“(第i行第j列表示第i个选手在第j天比赛的选手序号)“< output(an);
//释放空间
for(int i=0; i<=n; i++)
{
delete[] a[i];
}
delete[] a;
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-25 12:07 game\bin\
目录 0 2017-11-23 13:00 game\bin\Debug\
文件 968767 2017-09-22 13:31 game\bin\Debug\game.exe
文件 1097 2017-09-22 12:57 game\game.cbp
文件 235 2018-01-13 22:42 game\game.depend
文件 322 2017-09-27 13:19 game\game.layout
文件 1284 2017-09-22 13:31 game\main.cpp
目录 0 2017-10-25 12:07 game\obj\
目录 0 2017-11-23 13:00 game\obj\Debug\
文件 14448 2017-09-22 13:31 game\obj\Debug\main.o
- 上一篇:FPGA多功能数字电子钟
- 下一篇:会场安排问题(贪心法)
评论
共有 条评论