算法训练 比赛安排
时间限制:1.0s 内存限制:512.0MB
问题描述
设有有2
n(n<=6)个球队进行单循环比赛,计划在2
n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2
n – 1天内每个队都与不同的对手比赛。
输入格式
输入文件matchplan.in共一行,输入n的数值。
输出格式
输出文件matchplan.out共(2 n – 1)行,第i行输出第i天的比赛安排。
格式为:<i> A-B,C-D,……。其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个比赛场次。
格式为:<i> A-B,C-D,……。其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个比赛场次。
样例输入
2
样例输出
<1>1-2,3-4
<2>1-3,2-4
<3>1-4,2-3
<2>1-3,2-4
<3>1-4,2-3
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m;
cin>>m;
int n=pow(2,m);
int a[100];//一维数组存放每天还没有比过的队
int b[100][100];//二维数组判断两队是否比过了
memset(b,0,sizeof(b));
for(int t=1;t<=n-1;t++)//记录天数
{
cout<<"<"<<t<<">";
memset(a,1,sizeof(a));
for(int i=1;i<=n;i++)
{
if(a[i]!=0)
{
a[i]=0;
// cout<<i;
// cout<<"-";
for(int j=1;j<=n;j++)
{
if(b[i][j]==0)
{
if(a[j]!=0)
{
cout<<i<<"-"<<j<<" ";
a[j]=0;
b[i][j]=b[j][i]=1;
break;
}
}
}
}
}
cout<<endl;
}
}