码迷,mamicode.com
首页 > 其他好文 > 详细

【递归】分形

时间:2018-01-27 23:09:08      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:map   closed   color   none   har   特征   size   using   初始化   

题目描述

分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。

技术分享图片

盒型分形定义如下:
度数为1的分形为:
X
度数为2的分形为:
X X
 X
X X
如果用B(n-1)代表度数为n-1的盒型分形,则度数为n的盒型分形可以递归的定义为:
B(n-1)       B(n-1)
      B(n-1)
B(n-1)       B(n-1)
    你的任务是输出度数为n的盒型分形。

输入

输入包含多个测试数据,每个测试数据占一行,包含一个正整数n,(n<=7)。输入最后一行为-1,表示结束。

输出

对每个测试数据,用X表示输出的盒型,每个测试数据对应的输出结果后输出一串"----------",每行的末尾不要输出任何多余的空格,否则得到的是格式错误的结果。

样例输入

1
2
3
4
-1

样例输出

X
----------
X X
 X
X X
----------
X X   X X
 X     X
X X   X X
   X X
    X
   X X
X X   X X
 X     X
X X   X X
----------
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
   X X               X X
    X                 X
   X X               X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
         X X   X X
          X     X
         X X   X X
            X X
             X
            X X
         X X   X X
          X     X
         X X   X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
   X X               X X
    X                 X
   X X               X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
----------


技术分享图片
 1 #include <iostream>
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 char mapp[800][800];               //记录图形
 5 void solve(int n,int x,int y)
 6 {
 7     if(n==1)
 8     {
 9         mapp[x][y]=X;
10     }
11     else
12     {
13         int sizee=pow(3.0,n-2);          
14         solve(n-1,x,y);                  //递归
15         solve(n-1,x+sizee*2,y);
16         solve(n-1,x+sizee,y+sizee);
17         solve(n-1,x,y+sizee*2);
18         solve(n-1,x+sizee*2,y+sizee*2);
19     }
20 }
21 int main()
22 {
23     int n;
24     while(cin>>n)
25     {
26         if(n==-1)
27             break;
28         int m=pow(3.0,n-1);        //m为图形大小
29         for(int i=0;i<m;i++)
30         {
31             for(int j=0;j<m;j++)
32                 mapp[i][j]= ;        //初始化
33         }
34         for(int i=0;i<m;i++)
35         {
36             mapp[i][m]=\0;      
37         }
38         solve(n,0,0);
39         for(int i=0;i<m;i++)
40         {
41             for(int j=m-1;j>=0;j--)
42             {
43                 if(mapp[i][j]==X)       //若为X则该行遍历结束
44                     break; 
45                 else if(mapp[i][j]!=X)  //若非X则赋为‘\0‘
46                     mapp[i][j]=\0;
47             }
48         }
49         for(int i=0;i<m;i++)
50             printf("%s\n",mapp[i]);
51         printf("----------\n");
52     }
53     return 0;
54 }
View Code

 

【递归】分形

标签:map   closed   color   none   har   特征   size   using   初始化   

原文地址:https://www.cnblogs.com/SoulSecret/p/8367352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!