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 :
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. Don't output any trailing spaces at the end of each line, or you may get an 'Presentation Error'!
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<stdio.h>
#include<string.h>
char s[1003][1003];
void dfs(int n,int x,int y)
{
if(n==1)
{
s[x][y]='X';
return ;
}
if(n-1)
{
int d=1;
for(int i=2;i<n;i++)
{
d*=3;
}
dfs(n-1,x,y);//左上
dfs(n-1,x+2*d,y);//右上
dfs(n-1,x+d,y+d);//中间
dfs(n-1,x,y+2*d);//左下
dfs(n-1,x+2*d,y+2*d);//右下
}
}
int main()
{
int i,j,n;
while(~scanf("%d",&n)&&n!=-1)
{
int Size=1;
for(i=1;i<n;i++)//图形的大小规格
{
Size*=3;
}
for(i=0;i<Size;i++)
{
for(j=0;j<Size;j++)
{
s[i][j]=' ';//先把打印图形的规格用空格铺好,再在dfs中用‘X’替代‘ ’
}
// s[i][Size]='\0';//不能在这里直接加换行符,中间一行会多空格
}
dfs(n,0,0);
for(i=0;i<Size;i++)
{
for(j=Size-1;j>=0;j--)
{
if(s[i][j]=='X')
{
s[i][j+1]='\0';
break;
}
}
}
for(i=0;i<Size;i++)
{
printf("%s\n",s[i]);
}
printf("-\n");
}
return 0;
}
02-03
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交