上善若水

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  2 Posts :: 32 Stories :: 2 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

最新随笔

搜索

  •  

积分与排名

  • 积分 - 10174
  • 排名 - 1166

最新评论

阅读排行榜

评论排行榜

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);
    }
}
posted on 2009-12-03 10:12 上善若水 阅读(106) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理