X形图
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:417 测试通过:43
描述
自相似的图样被称为分形,例如如下图形:
它的基本形(深度为1)是 X
由它自身组成深度为2的图形是
X X
X
X X
由深度为n-1的图形组成的深度为n的图形,是按照如下规则组成的:
B(n-1) B(n-1)
B(n-1)
B(n-1) B(n-1)
输入
第一行为测试数据的个数T(T<=20)
每组输入数据一行,为图形深度(不超过7)
输出
对于每组输入数据,输出给定图形.每组数据后有一个空行
样例输入
2
2
3
样例输出
X X
X
X X
X X X X
X X
X X X X
X X
X
X X
X X X X
X X
X X X X
提示
注意换行和空格,
样例没有对齐,可以把它复制出来到记事本查看
题目来源
NUAA
分析:主要就在于怎么画的问题,感觉输出时太费时间了。
#include <stdio.h>
#include <string>
#include <math.h>
#define max 800
char chx[800][800];
void drawx(int n)
{
int m,i,j,k,a;
a=pow(3,n-1);
for (i=0;i<a;i++)
{
for (j=0;j<a;j++)
{
printf("%c",chx[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
int n,m,i,j,k,a;
memset(chx,' ',sizeof(chx));
chx[0][0]='X';
for (k=1;k<7;k++)
{
a=pow(3,k-1);
for (i=0;i<a;i++)
{
for (j=0;j<a;j++)
{
chx[2*a+i][j]=chx[i][j];
chx[a+i][a+j]=chx[i][j];
chx[i][2*a+j]=chx[i][j];
chx[2*a+i][2*a+j]=chx[i][j];
}
}
}
scanf("%d",&n);
while (n--)
{
scanf("%d",&m);
drawx(m);
}
}