提交时间:2024-01-25 09:10:11

运行 ID: 127458

#include<bits/stdc++.h> using namespace std; int n,m; bool b[11][11][11]; int main(){ cin>>m; n=2*m; for(int i=1;i<=n;i++){ printf("%-4d",i); b[1][1][i]=b[i][1][1]=1; } cout<<endl; for(int i=2;i<=n;i++){//遍历每个选手 printf("%-4d",i); for(int j=1;j<n;j++){//遍历每天 if(j<i){//如果天数<选手编号(选手这一天已经与前面的选手比赛过) for(int k=1;k<i;k++){//遍历前面的每个选手k if(b[k][j][i]){//如果k选手在第j天与i选手比赛过 printf("%-4d",k);//今天i与k比赛 break; } } } else{ for(int k=i+1;k<=n;k++){//遍历后面的每个选手k bool flag=1; for(int l=1;l<=k;l++){//遍历该选手前面的每个选手l if(b[l][j][k]){//如果l选手在第j天与k选手比赛过 flag=0;//则i选手不能在这一天与k选手比赛 break; } } if(flag){//如果可以比赛 b[i][j][k]=b[k][j][i]=1;//i在第j天与k比赛 printf("%-4d",k); break; } } } } cout<<endl; } return 0; }