サイクルスケジュールの問題
标题:2^k人の選手がテニスのリーグ戦を行い、試合スケジュールを設計する必要がある.試合はn-1日間行われた.各選手は1日に1回しか試合ができず、各選手は他の選手と1回ずつ試合をしなければならない.解決:非常に簡単な再帰的な問題です.
#include
#include
using namespace std;
const int maxn = 5000;
int k;
int map[maxn][maxn];
void com(int len) {
if (len == 0) {
return;
}
com(len / 2);
for (int i = 1; i <= len; i++) {
for (int j = len + 1; j <= 2 * len; j++) {
map[i][j] = map[i][j - len] + len;
}
}
for (int i = 1 + len; i <= 2 * len; i++) {
for (int j = 1; j <= len; j++) {
map[i][j] = map[j][i];
}
}
for (int i = 1 + len; i <= 2 * len; i++) {
for (int j = 1 + len; j <= 2 * len; j++) {
map[i][j] = map[i - len][j - len];
}
}
}
int main()
{
map[1][1] = 1;
cin >> k;
com(pow(2, k - 1));
for (int i = 1; i <= pow(2, k); i++) {
for (int j = 1; j <= pow(2, k); j++) {
cout << map[i][j] << " ";
}
cout << endl;
}
return 0;
}