一、题目描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c52d4a4e5efd4034838afe909aea9506.png)
二、参考代码
#include<iostream>
#include<vector>
#include<cstdlib>
using namespace std;
void generateSchedule(vector< vector<int> >& table, int numPlayers, int rounds) {
for (int i = 1; i <= numPlayers; i++) {
table[1][i] = i;
}
int matchGroupSize = 1;
for (int round = 1; round <= rounds; round++) {
numPlayers /= 2;
for (int group = 1; group <= numPlayers; group++) {
for (int i = 1 + matchGroupSize; i <= 2 * matchGroupSize; i++) {
for (int j = 1 + matchGroupSize; j <= 2 * matchGroupSize; j++) {
table[i][j + (group - 1) * matchGroupSize * 2] = table[i - matchGroupSize][j + (group - 1) * matchGroupSize * 2 - matchGroupSize];
table[i][j + (group - 1) * matchGroupSize * 2 - matchGroupSize] = table[i - matchGroupSize][j + (group - 1) * matchGroupSize * 2];
}
}
}
matchGroupSize *= 2;
}
}
int calculateRounds(int numPlayers, int rounds) {
do {
numPlayers = numPlayers / 2;
rounds++;
} while (numPlayers > 1);
return rounds;
}
void printSchedule(vector< vector<int> >& table, int numPlayers) {
for (int i = 1; i <= numPlayers; i++) {
for (int j = 2; j <= numPlayers; j++) {
cout << table[i][j] << " ";
}
cout << endl;
}
}
int main() {
int rounds = 0;
int numPlayers = 0;
cin >> numPlayers;
vector< vector<int> > v(numPlayers + 1, vector<int>(numPlayers + 1));
rounds = calculateRounds(numPlayers, rounds);
generateSchedule(v, numPlayers, rounds);
printSchedule(v, numPlayers);
return 0;
}