1 条题解
-
0
解题思路
分形结构分析
阶盒分形可以看作由 个 () 阶盒分形组成,分别位于 左上、右上、中间、左下、右下 位置。
中间部分是一个 () 阶盒分形,其余四个分布在四个角落。
数学规律
盒分形的边长是 ^(),即 = 时是 x,= 时是 x,= 时是 9x9,以此类推。
对于任意坐标 (, ),如果 ( / + / ) % == (其中 从 到 ),则该位置是 ,否则是空格。
递归 vs 数学计算
递归方法直接模拟分形构造,但实现较复杂。
数学方法利用坐标计算,判断是否属于分形部分,更高效。
解题方法(基于给定C++代码)
方法:
数学坐标判定法
核心思想:
遍历所有 (, ) 坐标,检查是否满足分形条件。
对于 阶分形,每个 (, ) 是否属于 取决于在每一层递归中是否处于正确位置。
关键步骤:
遍历 和 从 到 - 。
对于每个 (, ),检查是否在所有 ( ≤ < )下,( / + / ) % == 。
如果满足条件,输出 ,否则输出空格。
C++代码实现:
#include"stdio.h" #include"math.h" main() { int i,j,n,ii,jj,k; while(scanf("%d",&n)&&n--!=-1) { for(i=0;i<pow(3,n);i++,printf("\n")) for(j=0;j<pow(3,n);j++) { for(ii=i,jj=j,k=0;k<n&&(ii%3+jj%3)%2==0;ii/=3,jj/=3,k++); printf("%c",32+56*(k==n)); } printf("-\n"); } }
- 1
信息
- ID
- 1084
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者