题目链接:https://judger.net/problem/1061

Problem Description

谢尔宾斯基地毯是一种分形图案,它的定义如下:
令F(n)表示嵌套n层的谢尔宾斯基地毯,那么(下面的“空”均表示空格,仅为示意,实际输出时应仍为空格)
当n=1时,F(1)为:

当n=2时,F(2)为:

空空空
空X空
空空空

一般地,如果F(n-1)表示嵌套n-1层的谢尔宾斯基地毯,则F(n)的递归定义如下:

F(n-1)F(n-1)F(n-1)F(n-1)X(n-1)F(n-1)F(n-1)F(n-1)F(n-1)

其中X(n)表示边长为n的正方形,其内部被字符X完全填充。
现在输入一个正整数n,请画出嵌套n层的谢尔宾斯基地毯F(n)。

Input

每个输入文件一组数据。
第一行一个正整数N(N<=7),表示谢尔宾斯基地毯的嵌套层数。

Output

输出嵌套n层的谢尔宾斯基地毯。为了让输出看起来更像地毯,请用加号+将结果完整包裹起来。

Sample Input 1

1

Sample Output 1

+++
+ +
+++

Sample Input 2

2

Sample Output 2

+++++
+   +
+ X +
+   +
+++++

Sample Input 3

3

Sample Output 3

+++++++++++
+         +
+ X  X  X +
+         +
+   XXX   +
+ X XXX X +
+   XXX   +
+         +
+ X  X  X +
+         +
+++++++++++

Sample Input 4

4

Sample Output 4

+++++++++++++++++++++++++++++
+                           +
+ X  X  X  X  X  X  X  X  X +
+                           +
+   XXX      XXX      XXX   +
+ X XXX X  X XXX X  X XXX X +
+   XXX      XXX      XXX   +
+                           +
+ X  X  X  X  X  X  X  X  X +
+                           +
+         XXXXXXXXX         +
+ X  X  X XXXXXXXXX X  X  X +
+         XXXXXXXXX         +
+   XXX   XXXXXXXXX   XXX   +
+ X XXX X XXXXXXXXX X XXX X +
+   XXX   XXXXXXXXX   XXX   +
+         XXXXXXXXX         +
+ X  X  X XXXXXXXXX X  X  X +
+         XXXXXXXXX         +
+                           +
+ X  X  X  X  X  X  X  X  X +
+                           +
+   XXX      XXX      XXX   +
+ X XXX X  X XXX X  X XXX X +
+   XXX      XXX      XXX   +
+                           +
+ X  X  X  X  X  X  X  X  X +
+                           +
+++++++++++++++++++++++++++++

1、分析

递归打印,打印方法同上一篇博客:晴天的魔法乐园——盒分形​,唯一的区别是每次递归的时候有两个打印,即四周的和中央。

2、代码

#include<stdio.h>
#include<math.h>
const int maxn = 800;
char matrix[maxn][maxn];
//坐标
int X[9] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
int Y[9] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};void fill(int n, int x, int y){if(n == 1){return;}else if(n == 2){matrix[x][y] = 'X';return;}//画四周图形 for(int i = 0; i < 9; i++){int newX = x + X[i] * pow(3, n - 2);int newY = y + Y[i] * pow(3, n - 2);fill(n - 1, newX, newY);}//画中央图形for(int i = 0; i < 9; i++){int newX = x + X[i] * pow(3, n - 3);int newY = y + Y[i] * pow(3, n - 3);fill(n - 1, newX, newY);}
} int main(){int n;scanf("%d", &n);fill(n, 400, 400);int scale = pow(3, n - 1);for(int i = 400 - scale / 2 - 1; i <= 400 + scale/2 + 1; i++){for(int j = 400 - scale / 2 - 1; j <= 400 + scale / 2 + 1; j++){//打印四周的'+' if(j == 400 - scale / 2 - 1 || j == 400 + scale / 2 + 1 || i == 400 - scale / 2 - 1 || i == 400 + scale / 2 + 1){printf("+");}else if(matrix[i][j] == 'X'){printf("X");}else{printf(" ");}}printf("\n");}return 0;
}

原文链接:https://www.qsp.net.cn/art/176.html

晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)相关推荐

  1. OpenGL进阶(七)-康托尔集 谢尔宾斯基地毯 Koch雪花

    这一篇关于分形图像,当然只是入门. 分形通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质.分形有几种类型 ...

  2. 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...

  3. Java学习日记:UI篇(6)--谢尔宾斯基地毯图

    Java学习日记:UI篇(6)–谢尔宾斯基地毯图 引言:谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构 ...

  4. python数据结构与算法40题_Python数据结构与算法40:递归编程练习题3:ASCII谢尔宾斯基地毯...

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 递归编程练习题3:ASCII谢尔宾斯基地毯 谢尔宾斯基地毯 谢尔宾斯基地毯是形如上图的正方形分形 ...

  5. python与分形0009 - 谢尔宾斯基地毯

    分形介绍 分形是一个悖论. 它惊人的简单,却又无限的复杂. 它很新,却又比尘埃更古老. 分形是什么?它们是从哪里来的?我们为什么要在乎? 20世纪非传统的数学家Benoit Mandelbrot在19 ...

  6. Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”

    1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...

  7. 画完三角形再画谢尔宾斯基地毯

    照样废话不说,看代码看注释 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import jav ...

  8. 按钮动作监听器和鼠标监听器的同时实现,在画图板上画出三角形,射线,曲笔,谢尔宾斯基三角形,谢尔宾斯基地毯Random类的实现,数组的实现,Thread.sleep的实现

    按钮动作监听器和鼠标监听器的实现 实例化 实现 监听器的类 DrawListener dl = new DrawListener();// 在界面上添加鼠标监听器对象(鼠标监听器的对象可以是界面和按钮 ...

  9. 谢尔宾斯基地毯的讲解

    谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构造,而谢尔宾斯基三角形采用的等边三角形进行分形构造.谢尔 ...

  10. Python实验舱谢尔宾斯基地毯绘制教程

    谢尔宾斯基地毯,和谢尔宾斯基三角形相似,下图就是谢尔宾斯基地毯 一,起始代码 p.width(3) p.speed(10) import turtle n=int(input()) base=int( ...

最新文章

  1. 云端应用SQL注入攻击
  2. HTML fieldset 标签 -- 表单分组
  3. XML Schema用法
  4. 深入了解ibatis源码----简单ibatis示例代码
  5. 欢乐纪中A组周六赛【2019.5.18】
  6. fiddler,他和其他抓包软件有什么区别,如何使用fiddler进行抓包
  7. fiddler工具条、状态栏、请求信息栏各按钮的作用
  8. mcldownload文件夹_《我的世界》中国版游戏空间精简教程 多余文件删除方法
  9. python 预测下一年数据 程序_python中神经网络预测时间序列数据
  10. ma5200g启用mpls l2***故障处理一则
  11. 数据迁移-商品数据迁移实践
  12. linux java 错误日志_求大神解决啊啊 啊,看看这个怎么了,在LINUX运行完的错误日志...
  13. 软件测试简历制作技巧与方法
  14. GB/T 35273—2020《信息安全技术个人信息安全规范》正式发布
  15. uni-app框架、微信小程序项目
  16. 蓝凌OA 漏洞学习——treexml.tmpl 远程命令执行漏洞
  17. 软件项目如何进行任务分配,减少冲突?
  18. LVGL 获取光标坐标位置
  19. 【初学者必看】vlc实现的rtsp服务器及转储H264文件
  20. 建峰化工:被错杀的低价绩优股

热门文章

  1. 手机拍照反差对焦、相位对焦和激光对焦系统解析
  2. 停止精神内耗 每日分享
  3. Deep-Learned Regularization and Proximal Operator for Image Compressive Sensing
  4. 高通8953 Android 9.0 在user模式下使用fastboot烧录
  5. Oracle RAC Failover 说明
  6. 以某SCI期刊为例说明该期刊投稿须知和流程
  7. 【机器视觉】二维码检测(QR 码)
  8. POI生成Word水印watermark(兼容WPS)的终极解决方案
  9. 我的世界1.16.1java模组怎么加,我的世界1.16(minecraft1.16)全新模组推荐
  10. ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...