代码如下
//循环比赛日程表
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3;
int m,n;
int a[N][N];
int game_table(int n) {
if (n == 2) {
a[1][1] = a[2][2] = 1;
a[1][2] = a[2][1] = 2;
return 1;
}
if (n > 2) game_table(n/2);
for(int i = n;i > n/2; i--){
for(int j = 1; j <= n; j++) {
a[i][j] = a[i - n / 2][j] + n / 2;
}
}
for(int i = 1; i <= n / 2; i++) {
for(int j = n;j > n / 2; j--) {
a[i][j] = a[j][i];
}
}
for(int i = n; i > n / 2;i--) {
for(int j = n;j > n / 2; j-- ) {
a[i][j] = a[i - n / 2][j - n / 2];
}
}
}
int main(){
cin >> m;
n = pow(2,m);
game_table(n);
for(int i = 1;i <= n; i++) {
for(int j = 1;j <= n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
它TLE了。求大佬帮忙优化