#lydlx00x0803id2288. 分形 Fractal
分形 Fractal
盒子分形绘制问题
题目描述
分形,具有以非整数维形式充填空间的形态特征。
通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质。
现在,定义"盒子分形"如下:
一级盒子分形:
X
二级盒子分形:
X X
X
X X
如果用 代表第 级盒子分形,那么第 级盒子分形即为:
B(n-1) B(n-1)
B(n-1)
B(n-1) B(n-1)
你的任务是绘制一个 级的盒子分形。
输入格式
输入包含几个测试用例。
输入的每一行包含一个不大于 的正整数 ,代表要输出的盒子分形的等级。
输入的最后一行为 ,代表输入结束。
输出格式
对于每个测试用例,使用 X 符号输出对应等级的盒子分形。
请注意 X 是一个大写字母。
每个测试用例后输出一个独立一行的短划线 -。
输入输出样例
输入样例
1
2
3
4
-1
输出样例
X
-
X X
X
X X
-
X X X X
X X
X X X X
X X
X
X X
X X X X
X X
X X X X
-
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X
X
X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
-
限制条件
- 最后一个测试用例为 ,表示输入结束
分形模式分析
观察分形模式:
- 等级1: 的矩阵,只有一个
X - 等级2: 的矩阵,在4个角上有等级1的分形,中心有一个
X - 等级3: 的矩阵,在4个角上有等级2的分形,中心有一个等级1的分形
- 等级n: 的矩阵
具体来说,等级 的分形可以看作:
- 一个 的网格
- 在网格的四个角放置等级 的分形
- 在网格的中心放置等级 的分形
- 其他地方用空格填充
实现方法
可以使用递归或递推的方法:
- 先计算等级 的分形尺寸:
- 初始化一个 的字符数组,填充为空格
- 递归地在指定位置绘制子分形
- 对于等级1,直接在中心位置放置
X - 对于等级 (),在5个位置递归绘制等级 的分形:
- 左上角:
- 右上角:
- 中心:
- 左下角:
- 右下角: