GitHub

分型宇宙 递归求解(1296)

题目描述:

魔法世界的科学家分形宇宙论,即宇宙是一个基本微粒,构成宇宙的无数个微粒又会有其他的小宇宙。分形定义如下:

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

输出描述:

对应于每组数,输出相应的分形图,并用一个 “-” 分隔

样例输入:

1

2

样例输出:

X
-
X X
 X
X X
-

 

 1 #include<iostream>
 2 #include<math.h>
 3 using namespace std;
 4 char m[2000][2000];
 5 void d(int n, int x, int y);
 6 int main(void){
 7     int n;
 8     while(cin>>n){
 9         int size = pow(3.0, n-1);
10         for(int i = 0; i <= size; i++){
11             for(int j = 0; j <= size; j++){
12                 m[i][j] = ' ';
13             }
14         }
15         d(n, 1, 1);
16         for(int i = 1; i <= size; i++){
17             for(int j = 1; j <= size; j++){
18                 cout<<m[i][j];
19             }
20             cout<<endl;
21         }
22         cout<<"-"<<endl;
23     }
24     return 0;
25 }
26 void d(int n, int x, int y){
27     if(n == 1){
28         m[x][y] = 'X';
29     }
30     else{
31         int size = pow(3.0, n-2);
32         d(n-1, x, y);
33         d(n-1, x, y+2*size);
34         d(n-1, x+size, y+size);
35         d(n-1, x+2*size, y);
36         d(n-1, x+2*size, y+2*size);
37     }
38 }
signal

 

posted @ 2019-06-23 21:06  繁华似锦觅安宁  阅读(723)  评论(0编辑  收藏  举报