您现在的位置是:首页 >技术杂谈 >C (3). 循环赛问题网站首页技术杂谈

C (3). 循环赛问题

Akiyama Mio lover 2023-07-25 00:00:03
简介C (3). 循环赛问题

题目描述

设有n个选手的网球循环比赛,其中n=2^k(0≤k<7)。现要设计一个满足以下条件的比赛日程表:
(1)每名选手要与其他n−1名选手都进行一次比赛;
(2)每名选手每天只赛一次;
(3)整个比赛共进行n−1天,要求每天没有选手轮空。

输入描述

选手人数n(n≤100),n只能为2的整数次幂。

输出描述

N阶方阵A[1..n,0..n−1],当j>0时,A[i,j]表示第i名运动员在第j天所遇到的比赛对手(A[i,0]=i),每个数据占5位宽度。

样例

×样例只是举例,并非全部测试数据,请保证你的程序能应对任意符合题意的数据

输入 复制

4

输出 复制

    1    2    3    4
    2    1    4    3
    3    4    1    2
    4    3    2    1

这是简单的模拟


#include<bits/stdc++.h>
using namespace std;
//#pragma GCC optimize(2)
#define  endl '
'
#define lowbit(x) ((x)&-(x))
const int N=2e6+10;
typedef long long ll;
ll ans=0,n1,m1;
ll t=0,s1=0,s2=0,s3=0,s4=0,max1=0,max2=0,w,min1=100000000,sum=0,n,m,i,j,k,v,l,r;

inline int read() {
	bool sym=0;
	int res=0;
	char ch=getchar();
	while(!isdigit(ch))sym |=(ch =='-'),ch=getchar();
	while(isdigit(ch)) res =(res<<3)+(res<<1)+(ch^48),ch=getchar();
	return sym ? -res : res;
}
void print(int x) {
	if(!x)return;
	print(x/10);
	putchar(x%10+'0');
}
int isPrime(int n)
{	
	float n_sqrt;
    if(n==1) return 0;
	if(n==2 || n==3) return 1;
	if(n%6!=1 && n%6!=5) return 0;
	n_sqrt=floor(sqrt((float)n));
	for(int i=5;i<=n_sqrt;i+=6)
	{
	    if(n%(i)==0 | n%(i+2)==0) return 0;
	}
        return 1;
        
}
ll a[1086][1087],b[100086];
int main() {


	/*ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);*/
cin>>s1;
s2=s1;
while(s1>1){
	s1>>=1;
	ans++;
}
a[1][1]=1;
a[1][2]=2;
a[2][1]=2;
a[2][2]=1;
if(ans==1)
{
	for(i=1;i<=s2;i++)
	{
		for(j=1;j<=s2;j++)
		{
			printf("%5lld",a[i][j]);
		}
		if(i!=s2)
		cout<<endl; 
	}
}
if(ans>1){
	ll ss=2;
	s3=2;
	while(ss<=ans){
		for(i=s3+1;i<=s3+s3;i++)
		{
			for(j=1;j<=s3;j++)
			{
				a[i][j]=a[i-s3][j]+s3;
			}
		}
		for(i=1;i<=s3;i++)
		{
			for(j=1+s3;j<=s3+s3;j++)
			{
				a[i][j]=a[i][j-s3]+s3;
			}
		}
		for(i=s3+1;i<=s3+s3;i++)
		{
			for(j=1+s3;j<=s3+s3;j++)
			{
				a[i][j]=a[i-s3][j-s3];
			}
		}
		s3=s3+s3;
		ss++;
	}
	for(i=1;i<=s3;i++)
	{
		for(j=1;j<=s3;j++)
		{
			printf("%5lld",a[i][j]);
		}
		if(i!=s3)
		cout<<endl; 
	}
	
}
	return 0;
}

//mio lover

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。