• POJ 2083 Fractal


    Fractal
    Time Limit: 1000MS   Memory Limit: 30000K
    Total Submissions: 6646   Accepted: 3297

    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 : 
    • A box fractal of degree 1 is simply 
    • A box fractal of degree 2 is 
      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 <stdio.h>
    #include <math.h>
    #include <iostream>
    using namespace std;
    
    char Map[1000][1000];
    
    void DFS(int n, int x, int y)
    {
        if (n == 1)
        {
            Map[x][y] = 'X';
            return;
        }
        int size = pow(3.0, n - 2);
        DFS(n - 1, x, y);//    左上角
        DFS(n - 1, x, y + size * 2);//右上角
        DFS(n - 1, x + size, y + size);//中间
        DFS(n - 1, x + size * 2, y);//左下角
        DFS(n - 1, x + size * 2, y + size * 2);//右下角
    }
    
    int main()
    {
        int n, size;
        while(scanf("%d", &n) != NULL && n != -1)
        {
            size = pow(3.0, n - 1);
            for (int i = 0; i <= size; i++)
            {
                for (int j = 0; j <= size; j++)
                {
                    Map[i][j] = ' ';
                }
                Map[i][size + 1] = '';
            }
            DFS(n, 1, 1);
            for (int i = 1; i <= size; i++)
            {
                printf("%s
    ", Map[i] + 1);
            }
            printf("-
    ");
        }
        return 0;
    }
  • 相关阅读:
    FZU-SE-K 第一次累计得分排行榜
    OO第四次总结
    OO第二次总结
    面向对象构造与设计第一次总结
    软件工程实践2019第四次作业
    蹒跚的第一步
    学期导图
    一篇随笔
    【软工】提问回顾与个人总结
    【软工】结对项目博客
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/3252235.html
Copyright © 2020-2023  润新知