POJ2083 Fractal 分形

枚举每个位置判断一下是不是X就好了

 1 /* ***********************************************
 2 Author        :BPM136
 3 Created Time  :2018/7/16 12:09:10
 4 File Name     :2083.cpp
 5 ************************************************ */
 6 
 7 #include<iostream>
 8 #include<cstdio>
 9 #include<algorithm>
10 #include<cstdlib>
11 #include<cmath>
12 #include<cstring>
13 #include<vector>
14 using namespace std;
15 
16 const int N = 105;
17 
18 int bit3[N];
19 
20 int PIC_OUT(int n,int x,int y) {
21     if(n<=0) return 1;
22     for(int i=1;i<=3;i++) {
23         for(int j=1;j<=3;j++) {
24             if(bit3[n-1]*(i-1)<x && x<=bit3[n-1]*i) {
25                 if(bit3[n-1]*(j-1)<y && y<=bit3[n-1]*j) {
26                     if((i+j)%2) return 0;
27                     return PIC_OUT(n-1,x-bit3[n-1]*(i-1),y-bit3[n-1]*(j-1));
28                 }
29             }
30         }
31     }
32 }
33 
34 int main() {
35     int n;
36     bit3[0]=1;
37     for(int i=1;i<=8;i++) bit3[i]=bit3[i-1]*3;
38     while(scanf("%d",&n)!=EOF && n>=0) {
39         int m=bit3[n-1];
40         for(int i=1;i<=m;i++) {
41             for(int j=1;j<=m;j++) {
42                 putchar(PIC_OUT(n-1,i,j)==1?'X':' ');
43             }
44             putchar('\n');
45         }
46         puts("-");
47     }
48     return 0;
49 }
View Code

猜你喜欢

转载自www.cnblogs.com/MyGirlfriends/p/9317301.html