分形

 

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 800;
 4 char g[N][N];
 5 int mul(int n) {
 6     int res = 1;
 7     for (int i = 1; i <= n; i++) {
 8         res *= 3;
 9     }
10     return res;
11 }
12 void dfs(int n) {
13     if (n == 1) {
14         g[0][0] = 'X';
15         return;
16     }
17     dfs(n - 1);
18     int len = mul(n - 2);
19     //右上的起点编号(0, 2 * len)
20     //中间的起点编号(1 * len, 1 * len)
21     //左下的起点编号(2 * len, 0)
22     //右下的起点编号(2 * len, 2 * len)
23     int sx[4] = {0, 1, 2, 2};
24     int sy[4] = {2, 1, 0, 2};
25     for (int k = 0; k < 4; k++) { //4次
26         for (int i = 0; i < len; i++) {
27             for (int j = 0; j < len; j++) {
28                 g[sx[k] * len + i][sy[k] * len + j] = g[i][j];
29             }
30         }
31     }
32 }
33 int main() {
34     dfs(7);
35     int n;
36     while (cin >> n && n != -1) {
37         int len = mul(n - 1);
38         for (int i = 0; i < len; i++) {
39             for (int j = 0; j < len; j++) {
40                 if (g[i][j]) {
41                     cout << "X";
42                 } else {
43                     cout << " ";
44                 }
45             }
46             cout << endl;
47         }
48         cout << "-" << endl;
49     }
50     return 0;
51 }

 

posted @ 2020-11-18 10:35  kyk333  阅读(182)  评论(0编辑  收藏  举报