zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    [LiDAR数据模拟]系列(2) HELIOS的TLS点云模拟流程
    [LiDAR数据模拟]系列(1) HELIOS模拟平台介绍
    [漫谈科研]系列(1) 分享才能进步
    python消息队列snakemq使用总结
    关于modbus rtu一个主站与多个从站通信的一点总结
    关于使用ffmpeg的一些牢骚
    Pyqt5 实时图像滚动
    pyqt5 窗体布局
    PyQt5创建第一个窗体(正规套路)
    pyqt中使用matplotlib绘制动态曲线
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/3252235.html
Copyright © 2011-2022 走看看