提交时间:2019-11-13 18:37:36
运行 ID: 2222
#include<iostream> #include<cmath> using namespace std; int a[1029][1029]; void f(int k,int n) { if(n==2) { a[k][1]=k; a[k][2]=k+1; a[k+1][1]=k+1; a[k+1][2]=k; } else { f(k,n/2); f(k+n/2,n/2); for(int i=k;i<k+n/2;i++) for(int j=n/2+1;j<=n;j++) a[i][j]=a[i+n/2][j-n/2]; for(int i=k+n/2;i<k+n;i++) for(int j=n/2+1;j<=n;j++) a[i][j]=a[i-n/2][j-n/2]; } } int main() { int n,m; cin>>m; n=pow(2,m); f(1,n); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) cout<<a[i][j]<<' '; cout<<endl; } return 0; }