poj 1941 递归输出图形(Sierpinski Fractal)

题意:递归输出图形。Fractal:分形。分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。分形一词,是芒德勃罗创造出来的,其原意具有不规则、支离破碎等意义。Fractal1973年,芒德勃罗(B.B.Mandelbrot)在法兰西学院讲课时,首次提出了分维和分形的设想。

思路:递归即可。

#include <cstdio>
#include <cstring>
#define N 2050
using namespace std;
int n;
char s[N/2][N];
void print(int x,int y,int d){
    int offset = 1<<(d-1);
    if(d == 1){
        s[x][y] = s[x+1][y-1] = '/';
        s[x][y+1] = s[x+1][y+2] = '\\';
        s[x+1][y] = s[x+1][y+1] = '_';
        return ;
    }
    print(x,y,d-1);
    print(x+offset, y-offset, d-1);
    print(x+offset, y+offset, d-1);
}
int main(){
    while(scanf("%d",&n) && n){
        int i,j,k;
        for(i = 1;i<=(1<<n);i++)
            for(j = 1;j<=(1<<(n+1));j++)
                s[i][j] = ' ';
        print(1,(1<<n),n);
        k = (1<<n)+1;
        for(i = 1;i<=(1<<n);i++,k++){
            for(j = 1;j<=k;j++)
                putchar(s[i][j]);
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}


你可能感兴趣的:(poj 1941 递归输出图形(Sierpinski Fractal))