循环赛日程表
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=500+50;
int n,a[maxn][maxn];
void dfs(int r,int c,int h){
if(h==1)return ;
h/=2;
a[r+h][c+h]=a[r][c];
a[r][c+h]=a[r][c]+h;
a[r+h][c]=a[r][c]+h;
dfs(r,c,h);
dfs(r+h,c+h,h);
dfs(r,c+h,h);
dfs(r+h,c,h);
}
int main(){
int i,j;
cin>>n;
n=pow(2,n);
a[1][1]=1;
dfs(1,1,n);
for(i=1;i<=n;i++){
for(j=1;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<a[i][n]<<endl;
}
return 0;
}