一道关于分形的题目。 就是按比例把图形放大。 第一次写这种类型,自己想了几种写法,这个写得是循环的,比较难懂,比较挫。 后面的3768是用的比较标准的分形。 #include<cstdio> #include<cstring> using namespace std; const bool is[3][3]={1,0,1,0,1,0,1,0,1}; int cur[15][2]; int n; void Update(int r,int colrow) { if (r<0) return ; if (r==n-2) cur[r][colrow]++; if (cur[r][colrow]==3){ cur[r][colrow]=0; cur[r-1][colrow]++; } Update(r-1,colrow); } int main() { int i,j,p,q,r,k,len; bool X; while (scanf("%d",&n)&&n!=-1){ memset(cur,0,sizeof(cur)); if (n==1){ printf("X/n-/n"); continue; } len=1; for (i=1;i<n;i++) len*=3; for (i=0;i<len;i++){ for (j=0;j<len;j++){ X=1; for (r=0;r<n-1;r++){ X&=is[cur[r][0]][cur[r][1]]; } if (X) printf("X"); else printf(" "); Update(n-2,1); } printf("/n"); Update(n-2,0); } printf("-/n"); } return 0; }