题目:比赛安排
解题思路:
没参加为false。用a[]数组记录每天参加比赛的球队,b[][]数组记录球队今天是否参加了比赛
第一层循环用来重置每天参赛后的a[]状态以及输出<i>
第二层循环判断该球队今日是否参加了比赛
第三层循环遍历还未参加比赛的球队
最后输出时需判断今日球队是否全部安排完,即是否输出','。
代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,b[101][101]={false};
cin>>n;
int m=pow(2,n);
for(int i=1;i<m;i++)
{
bool a[101]={false};
cout<<"<"<<i<<">";
for(int j=1;j<=m;j++)
{
if(!a[j])
{
a[j]=true;
for(int k=j+1;k<=m;k++)
{
if(!a[k]&&!b[j][k])
{
if(j!=1) cout<<",";
cout<<j<<"-"<<k;
b[j][k]=true;
a[k]=true;
break;
}
}
}
}
cout<<endl;
}
return 0;
}