提交时间:2024-01-25 10:06:55
运行 ID: 127744
#include<bits/stdc++.h> using namespace std; int m,a[1112][1211],n; void dfs(int x,int y,int s){ if(s==1){ a[x][y]=a[x+1][y+1]=1; a[x+1][y]=a[x][y+1]=2; return; } dfs(x,y,s-1); for(int i=1;i<=x+(1<<s-1)-1;i++){ for(int j=1;j<=y+(1<<s-1)-1;j++){ a[i+(1<<s-1)][j]=a[i][j]+(1<<s-1); a[i][j+(1<<s-1)]=a[i][j]+(1<<s-1); a[i+(1<<s-1)][j+(1<<s-1)]=a[i][j]; } } } int main(){ cin>>m; n=1<<m; if(n==1){ cout<<1; return 0; } dfs(1,1,m); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) printf("%-4d",a[i][j]); cout<<"\n"; } return 0; }