poj 2083 Fractal

来源:互联网 发布:用java求最小公倍数 编辑:程序博客网 时间:2024/05/05 01:25

http://poj.org/problem?id=2083

Fractal

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-

一共7组,打表,将图案存到数组里

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <cstdlib>#include <limits>#include <queue>#include <stack>#include <vector>#include <map>using namespace std;typedef long long LL;#define N 1750#define INF 0x3f3f3f3f#define PI acos (-1.0)#define EPS 1e-5#define met(a, b) memset (a, b, sizeof (a))char str[N][N];int h;void Init (){    met (str, ' ');    str[1][0] = 'X';    int hh = 1;    for (int i=2; i<=7; i++)    {        for (int j=1; j<=hh; j++)        {            for (int k=0; k<hh; k++)            {                str[j][k+2*hh] = str[j][k];                str[j+hh][k+hh] = str[j][k];                str[j+2*hh][k] = str[j][k];                str[j+2*hh][k+2*hh] = str[j][k];            }        }        hh *= 3;    }}int main (){    int n;    Init ();    while (scanf ("%d", &n), n!=-1)    {        h = (int)pow (3.0, n-1);        for (int i=1; i<=h; i++)        {            for (int j=0; j<h; j++)            printf ("%c", str[i][j]);            puts ("");        }        puts ("-");    }    return 0;}

DFS搜索

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <cstdlib>#include <limits>#include <queue>#include <stack>#include <vector>#include <map>using namespace std;typedef long long LL;#define N 1750#define INF 0x3f3f3f3f#define PI acos (-1.0)#define EPS 1e-5#define met(a, b) memset (a, b, sizeof (a))#define Lson rt<<1, l, tree[rt].mid()#define Rson rt<<1|1, tree[rt].mid()+1, rchar str[N][N];void DFS (int n, int x, int y){    if (n == 1)    {        str[x][y] = 'X';        return;    }    int h = (int) pow (3.0, (n-2));    DFS (n-1, x, y);///左上角    DFS (n-1, x, y+2*h);///右上角    DFS (n-1, x+h, y+h);///中间    DFS (n-1, x+2*h, y);///左下角    DFS (n-1, x+2*h, y+2*h);///右下角}int main (){    int n;    while (scanf ("%d", &n), n!=-1)    {        met (str, ' ');        DFS (n, 1, 1);        int h = (int) pow (3.0, (n-1));        for (int i=1; i<=h; i++)        {            for (int j=1; j<=h; j++)                printf ("%c", str[i][j]);            puts ("");        }        puts ("-");    }    return 0;}


1 0
原创粉丝点击