分析:
如果有n个球队进行单循环比赛,比赛需要进行n-1天内完成。所以我们首先要知道自己不能和自己比,而且一个球队除了自己这个球队外与其他球队都要打一场,而且只能打一场。因为这里要用到pow()函数,所以我们需要使用#include<cmath>这个头文件,然后我们定义一个sum来储存n的pow(2,n),nmb用来储存sum-1也就是需要比赛的天数。再定义2个数组a[70],b[70][70]并把它们初始化为0,然后我们为了不重复所以双重循环可以写成
for(int i=1;i<=sum;i++){
for(int j=i+1;j<=sum;j++){
}
}
当然还要写一些条件判断,这样我们就能避免重复了。
#include<iostream>
#include<math.h>
#include<cmath>
using namespace std;
int a[70]={0};
int b[70][70]={0};
int main(){
int n,days=0;
cin>>n;
int sum=pow(2,n);
int nmb=sum-1;
while(nmb--){
days++;
cout<<"<"<<days<<">";
for(int i=1;i<=sum;i++){
if(!a[i]){
a[i]=1;
for(int j=i+1;j<=sum;j++){
if(!a[j]&&!b[i][j]){
a[j]=1;b[i][j]=1;
if(i!=1) cout<<",";
cout<<i<<"-"<<j;
break;
}
}
}
}
for(int i=0;i<=sum;i++) a[i]=0;
cout<<endl;
}
return 0;
}