Fractal
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 7489 | Accepted: 3627 |
Description
A fractal is an object or quantity that displays self-similarity, in a somewhat technical sense, on all scales. The object need not exhibit exactly the same structure at all scales, but the same "type" of structures must appear on all scales.
A box fractal is defined as below :
Your task is to draw a box fractal of degree n.
A box fractal is defined as below :
- A box fractal of degree 1 is simply
X
- A box fractal of degree 2 is
X X
X
X X
- If using B(n - 1) to represent the box fractal of degree n - 1, then a box fractal of degree n is defined recursively as following
B(n - 1) B(n - 1) B(n - 1) B(n - 1) B(n - 1)
Your task is to draw a box fractal of degree n.
Input
The input consists of several test cases. Each line of the input contains a positive integer n which is no greater than 7. The last line of input is a negative integer −1 indicating the end of input.
Output
For each test case, output the box fractal using the 'X' notation. Please notice that 'X' is an uppercase letter. Print a line with only a single dash after each test case.
Sample Input
1
2
3
4
-1
Sample Output
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
-
#include<iostream> #include<cmath> #include<string.h> using namespace std; char map[1000][1000]; void display(int n,int x,int y) { int size=pow(3,n-2); if(n==1) map[x][y]='X'; else{ display(n-1,x,y);//左上 display(n-1,x,y+2*size);//右上 display(n-1,x+size,y+size);//中间 display(n-1,x+2*size,y);//左下 display(n-1,x+2*size,y+2*size);//右下 } } int main() { int n,size,i,j; while(cin>>n&&n!=-1) { size=pow(3,n-1); memset(map,0,sizeof(map)); for(i=0;i<size;i++) { for(j=0;j<size;j++) map[i][j]=' '; map[i][j]='\0'; } display(n,0,0); for(i=0;i<size;i++) cout<<map[i]<<endl; cout<<'-'<<endl; } return 0; }