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'!

题意:输出n层"X"型分型,遇到-1时结束输入,可以看成一个3X3的正方形X为原型,输出后还要在另一行输出一个"-"

注意:图形最右方"X"后的空格不能输出,这里给出的一个解决方法是单独把他们标记出来,输出时检测这些标记来控制输出格式

 #include<iostream>
 #include<cstdio>
 #include<cstring>
 #define ll long long
 using namespace std;
 ;
 ,b;
 char mp[amn][amn];
 char ans[amn][amn];
 void solve(int x,int y,int tot)
 {
     )
     {
         ans[x][y]='X';
         return;
     }
     int tes=tot/a;
     for(int i=x; i<tot+x; i+=tes)///注意这里i=x,j=y,找了好久才发现错误....
     {
         for(int j=y; j<tot+y; j+=tes)
         {
             if(mp[(i-x)/tes][(j-y)/tes]=='X')
             {
                 solve(i,j,tes);
             }
         }
     }
 }
 int main()
 {

     )
     {
         ; i<; i++)
         {
             ; j<; j++)
             {
                 ||i==)&&(j==||j==))||(i==&&j==))mp[i][j]='X';
                 else mp[i][j]=' ';
             }
         }
         ;///注意初始化
         ; i<b; i++)c*=a;
         ; i<c; i++)
             ; j<c; j++)
                 ans[i][j]=' ';
         solve(,,c);
         ; i<c; i++)
         {
             ; j>=; j--)///这里是从每一行的最后一个元素开始检测
             {
                 if(ans[i][j]==' ')///将空格标记,遇到第一个"X"时跳出本次循环
                     ans[i][j]='*';
                 else break;
             }
         }
         ; i<c; i++)
         {
             ; j<c; j++)
             {
                 if(ans[i][j]!='*')///如果这个不是被标记的元素则输出
                     printf("%c",ans[i][j]);
                 else break;
             }

             printf("\n");
         }
         printf("-\n");
     }
 }

ZOJ - 2423-Fractal的更多相关文章

  1. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  2. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  3. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  4. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  5. ZOJ Problem Set - 1049 I Think I Need a Houseboat

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...

  6. ZOJ Problem Set - 1006 Do the Untwist

    今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...

  7. ZOJ Problem Set - 1001 A + B Problem

    ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...

  8. zoj 1788 Quad Trees

    zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...

  9. ZOJ 1958. Friends

    题目链接: ZOJ 1958. Friends 题目简介: (1)题目中的集合由 A-Z 的大写字母组成,例如 "{ABC}" 的字符串表示 A,B,C 组成的集合. (2)用运算 ...

  10. ZOJ

    某年浙大研究生考试的题目. 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下:1. zoj能AC:2. 若字符串形式为xzojx,则也能AC, ...

随机推荐

  1. RobotFramework RobotFramework官方demo Quick Start Guide浅析

    RobotFramework官方demo Quick Start Guide浅析   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishouk ...

  2. Android 程序崩溃之后fragment出现画面重叠问题

    1.解决方法: 直接在包含Fragment的Activity中复写onSaveInstanceState()方法,使其空实现 @Override protected void onSaveInstan ...

  3. Android为TV端助力 内存溢出与内存泄露

    内存溢出就是软件运行需要的内存,超出了java虚拟机给他分配的可用的最大内存 内存泄露就是在缓存图片文字等等的时候,没有关闭流所导致的内存泄露

  4. Chrome Inspect不显示Webview页面的问题总结

    首先,确保手机打开了USB调试.如果还是检测不到WebView页面,主要有以下几种情况. 1.反应慢,稍等一会 2.关闭然后重新打开USB调试开关,刺激一下chrome,我的魅族手机有时需要这样操作一 ...

  5. jquery带参插件函数的编写

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  6. python的内置函数time

    time 模块 1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # t ...

  7. (python)数据结构------列表

    一.数字的处理函数 (一)int() 取整数部分,与正负号无关,举例如下: print(int(-3.6), int(-2.5), int(-1.4)) print(int(3.6), int(2.5 ...

  8. no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups的解决方法

    解决方法一: 找到这个settings.xml文件,进行编辑,在pluginGroups标签下加入下面的配置 <pluginGroups><pluginGroup>org.ap ...

  9. Python:decorator [转]

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...

  10. ASP.NET -- WebForm -- 页面生命周期

    ASP.NET -- WebForm --  页面生命周期 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件 ...