資源簡介
設有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多功能數字電子鐘
- 下一篇:會場安排問題(貪心法)
評論
共有 條評論