#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define MAX 3010
char maps[MAX][MAX];
void print(int n, int x, int y)
{
if (n == 1)
{
maps[x][y + 1] = maps[x + 1][y] = maps[x + 1][y + 2] = 'O';
return;
}
else
{
int m = pow(2, n - 1); //选择上次分形度(n-1) m为高, 2*m为宽;
print(n - 1, x, y + m);
print(n - 1, x + m, y);
print(n - 1, x + m, y + 2 * m);
}
}
int main()
{
int t;
scanf("%d", &t);
for (int i = 0; i<t; i++)
{
int n;
memset(maps, ' ', sizeof(maps)); //初始化为空格
scanf("%d", &n);
int m = pow(2, n); //选择此次分形度
print(n, 0, 0);
for (int i = 0; i<m; i++)
for (int j = 2 * m - 1; j >= 0; j--){
if (maps[i][j - 1] == 'O')
{
maps[i][j] = '\0'; break;
} //倒序查找 设置'\0';
}
for (int i = 0; i<m; i++)
{
printf("%s\n", maps[i]);
}
}
}
分形三角形
最新推荐文章于 2020-12-04 12:30:41 发布