分形【递归】

image

从这种题是找图形变换的规律,然后把他从最基本的问题求解,也就是先递归到子问题

像下面这图片的分析


然后路上代码:

  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 
原文地址:https://www.cnblogs.com/rstz/p/12725029.html