题目描述:
魔法世界的科学家分形宇宙论,即宇宙是一个基本微粒,构成宇宙的无数个微粒又会有其他的小宇宙。分形定义如下:
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 }