您的位置:首页 > 其它

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

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

思路:递归即可。

#include <cstdio>
#include <cstring>
#define N 2050
using namespace std;
int n;
char s[N/2]
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: