1 #include <stdio.h> 2 #include <stdlib.h> 3 int a[10000][10000]; 4 void huan(int row,int len) 5 { 6 int i,j; 7 for(i=0; i<len/2; i++) 8 { 9 for(j=0; j<len/2; j++) 10 { 11 a[row+i+len/2][j+len/2] = a[row+i][j]; 12 } 13 } 14 for(i=0; i<len/2; i++) 15 { 16 for(j=0; j<len/2; j++) 17 { 18 a[row+i][j+len/2] = a[row+i+len/2][j]; 19 } 20 } 21 } 22 void fd(int row,int len) 23 { 24 if(len!=0) 25 { 26 fd(row,len/2); 27 fd(row+len/2,len/2); 28 huan(row,len); 29 } 30 31 } 32 33 int main() 34 { 35 int i,j,n,m=1; 36 37 scanf("%d",&n); 38 for(i=0; i<n; i++) 39 { 40 m=m*2; 41 } 42 for(i=0; i<m; i++) 43 { 44 a[i][0]=i+1; 45 } 46 fd(0,m); 47 for(i=0; i<m; i++) 48 { 49 for(j=0; j<m-1; j++) 50 { 51 printf("%d ",a[i][j]); 52 } 53 printf("%d",a[i][j]); 54 printf(" "); 55 } 56 57 return 0; 58 }