2328 - 比赛安排

设有2nn<=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;
} 
时间限制 1 秒
内存限制 125 MB
讨论 统计
上一题 下一题