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("\n");
55 }
56
57 return 0;
58 }