POJ-2083 Fractal-X星阵图

来源:互联网 发布:listmap转json 编辑:程序博客网 时间:2024/05/18 20:09
Fractal
Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 8060 Accepted: 3862

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

1234-1

Sample Output

X-X X XX X-X X   X X X     XX X   X X   X X    X   X XX X   X X X     XX X   X X-X X   X X         X X   X X X     X           X     XX X   X X         X X   X X   X X               X X    X                 X   X X               X XX X   X X         X X   X X X     X           X     XX X   X X         X X   X X         X X   X X          X     X         X X   X X            X X             X            X X         X X   X X          X     X         X X   X XX X   X X         X X   X X X     X           X     XX X   X X         X X   X X   X X               X X    X                 X   X X               X XX X   X X         X X   X X X     X           X     XX X   X X         X X   X X-

Source

Shanghai 2004 Preliminary

#include<iostream>#include<stdio.h>#include<cstring>#include<string>using namespace std;char maps[1000][1000];int n;void dfs(int n,int x,int y){    if(n==1)        maps[x][y]='X';    else    {        if(n-1)        {            int size=1;            for(int i=2; i<n; i++)                size*=3;            dfs(n-1,x,y);//左上方n-1度            dfs(n-1,x+size*2,y);//右上方n-1度            dfs(n-1,x,y+size*2);//中间n-1度            dfs(n-1,x+size,y+size);//左下方n-1度            dfs(n-1,x+size*2,y+size*2);//右下方n-1度        }    }}int main(){    while(~scanf("%d",&n) && n!=-1)    {        int size=1,i,j;        for(i=1; i<n; i++) size*=3;        for(i=0; i<size; i++)        {            for(j=0; j<size; j++)                maps[i][j]=' ';            maps[i][size]='\0';        }        dfs(n,0,0);        for(i=0; i<size; i++)            printf("%s\n",maps[i]);        printf("-\n");    }    return 0;}


0 0
原创粉丝点击