#include<stdio.h> #include<string.h> #include<math.h>
const int MAX=1024;
char mat[MAX+1][MAX*2+2];
void draw(int x,int y,int depth) { if(depth==1) //基本的三角形 { mat[x][y]='/';mat[x][y+1]='\\'; mat[x+1][y-1]='/';mat[x+1][y+2]='\\'; mat[x+1][y]='_';mat[x+1][y+1]='_'; return ; }
int offset=(int)pow((double)2,(double)(depth-1)); draw(x,y,depth-1); //递归分割三角形 draw(x+offset,y-offset,depth-1); draw(x+offset,y+offset,depth-1); }
int main() { memset(mat,' ',sizeof(mat)); draw(1,MAX,10); for(int i=1;i<=MAX;i++) //终止行的输出 { mat[i][MAX+1+i]='\0'; }
int n; while(scanf("%d",&n),n) { int startX=MAX-(int)pow((double)2,(double)n)+1; int startY=MAX*2-(int)pow((double)2,(double)(n+1))+1;
for(int i=startX;i<=MAX;i++) { printf("%s\n",&mat[i][startY]); } printf("\n"); } return 0; }
|