从这种题是找图形变换的规律,然后把他从最基本的问题求解,也就是先递归到子问题
像下面这图片的分析
然后路上代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int rc[730][730],n,i,j; 4 5 void dg(int n,int x,int y) 6 { 7 if (n==1) 8 { 9 rc[x][y]=1; 10 return ; 11 } 12 int len=pow(3, n-2);//枚举len的长度,也就是枚举两个X之间的空格数 13 dg(n-1,x,y);//左上 14 dg(n-1,x+2*len,y);//右上 15 dg(n-1,x+len,y+len);//中间 16 dg(n-1,x,y+2*len);//左下 17 dg(n-1,x+2*len,y+2*len);//右下 18 //以上具体可以通过样例理解 19 } 20 int main() 21 { 22 while(cin >> n, n != -1) 23 { 24 memset(rc, 0, sizeof(rc)); 25 dg(n,1,1); 26 for (i=1;i<=pow(3,n-1);i++) 27 { 28 for (j=1;j<=pow(3,n-1);j++) 29 if (rc[i][j]) 30 cout<<"X"; 31 else 32 cout<<" "; 33 puts(""); 34 } 35 puts("-");//题目中说的,要注意哦! 36 } 37 return 0; 38 } 39