zoukankan      html  css  js  c++  java
  • 【递归】分形

    问题 C: 【递归】分形

    时间限制: 1 Sec  内存限制: 128 MB

    题目描述

    分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。
    盒型分形定义如下:
    度数为1的分形为:
    X
    度数为2的分形为:
    X X
     X
    X X
    如果用B(n-1)代表度数为n-1的盒型分形,则度数为n的盒型分形可以递归的定义为:
    B(n-1)       B(n-1)
          B(n-1)
    B(n-1)       B(n-1)
        你的任务是输出度数为n的盒型分形。

    输入

    输入包含多个测试数据,每个测试数据占一行,包含一个正整数n,(n<=7)。输入最后一行为-1,表示结束。

    输出

    对每个测试数据,用X表示输出的盒型,每个测试数据对应的输出结果后输出一串"----------",每行的末尾不要输出任何多余的空格,否则得到的是格式错误的结果。

    样例输入

    1
    2
    3
    4
    -1
    

    样例输出

    X
    ----------
    X X
     X
    X X
    ----------
    X X   X X
     X     X
    X X   X X
       X X
        X
       X X
    X X   X X
     X     X
    X X   X X
    ----------
    X X   X X         X X   X X
     X     X           X     X
    X X   X X         X X   X X
       X X               X X
        X                 X
       X X               X X
    X X   X X         X X   X X
     X     X           X     X
    X X   X X         X X   X X
             X X   X X
              X     X
             X X   X X
                X X
                 X
                X X
             X X   X X
              X     X
             X X   X X
    X X   X X         X X   X X
     X     X           X     X
    X X   X X         X X   X X
       X X               X X
        X                 X
       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 <iostream>
    #include<cstdio>
    #include<cstring>
    #include <cmath>
    using namespace std;
    char maps[800][800];
    void slove(int n,int x,int y) {
        if (n==1) {
            maps[x][y]='X';
            return ;
        } else {
            int size = pow(3.0,n-2);
            slove(n-1,x,y);
            slove(n-1,x+size*2,y);
            slove(n-1,x+size,y+size);
            slove(n-1,x,size*2+y);
            slove(n-1,x+2*size,y+2*size);
        }
     
    }
    int main() {
        int n;
        while(scanf("%d", &n)!=EOF && n != -1) {
            int size = pow(3,n-1);
            for (int i = 0; i < size; i++) {
                for(int j= 0; j < size; j++) {
                    maps[i][j] = ' ';
                }
            }
            for(int i = 0; i < size; i++) maps[i][size] = '';
            slove(n, 0, 0);
            for (int i = 0; i < size; i++) {
                for(int j = size - 1; j >= 0; j--) {
                    if(maps[i][j]== 'X') break;
                    if(maps[i][j] != 'X')  maps[i][j] = '';
                }
            }
            for (int i = 0; i < size; i++) {
                puts(maps[i]);
            }
            printf("----------
    ");
        }
     
        return 0;
    }
     
    View Code
  • 相关阅读:
    外部无法捕捉Realm的doGetAuthenticationInfo方法抛出的异常
    Redis多实例及主从搭建
    Redis安装
    window.showModalDialog两次加载问题清除缓存方法
    JQuery分页插件bs_pagination的应用
    解决IE11出现异常SCRIPT5011:不能执行已释放Script的代码
    通过CSS禁用页面模块的复制和粘贴功能
    C# toString()转换详细(转)
    百度ue富文本编辑器setContent方法报错初始化加载内容失败解决办法
    前端页面div float 后高度 height 自适应的问题
  • 原文地址:https://www.cnblogs.com/cshg/p/5641819.html
Copyright © 2011-2022 走看看