2328 - 比赛安排
设有2n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2n – 1天内每个队都与不同的对手比赛。
例如n=2时的比赛安排:
队 1 2 3 4
比赛 1==2 3==4 一天
1==3 2==4 二天
1==4 2==3 三天
题目输入
每个测试文件只包含一组测试数据,每组输入数据为一个正整数n(n<=6)。
题目输出
对于每组输入数据,输出比赛安排,从第一天的安排开始,每天占一行,每行开头先输出天号,再输出当天的安排,优先给队伍编号小的队伍安排比赛,具体格式见样例输出。
输入/输出样例
题目输入
2
题目输出
<1>1-2,3-4 <2>1-3,2-4 <3>1-4,2-3
C++解答
#include<iostream> #include<cmath> using namespace std; int flag[70][70]; int main() { int i,j,k,n; cin>>n; int p=pow(2,n); for (j=1;j<=p-1;j++) { cout<<"<"<<j<<">"; int a[70]={0},cur=1,last; for (cur=1;cur<=p;cur++) { if (cur&1) { for (i=1;i<=p;i++) if (a[i]==0) { cout<<i<<"-";a[i]=1;last=i;break; } } else { for(i=1;i<=p;i++) if (a[i]==0 && flag[last][i]==0) { if (cur!=p)cout<<i<<","; else cout<<i; a[i]=1; flag[last][i]=1; break; } } } cout<<endl; } return 0; }