晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)
题目链接: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
晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)相关推荐
- OpenGL进阶(七)-康托尔集 谢尔宾斯基地毯 Koch雪花
这一篇关于分形图像,当然只是入门. 分形通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质.分形有几种类型 ...
- 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯
陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...
- Java学习日记:UI篇(6)--谢尔宾斯基地毯图
Java学习日记:UI篇(6)–谢尔宾斯基地毯图 引言:谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构 ...
- python数据结构与算法40题_Python数据结构与算法40:递归编程练习题3:ASCII谢尔宾斯基地毯...
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 递归编程练习题3:ASCII谢尔宾斯基地毯 谢尔宾斯基地毯 谢尔宾斯基地毯是形如上图的正方形分形 ...
- python与分形0009 - 谢尔宾斯基地毯
分形介绍 分形是一个悖论. 它惊人的简单,却又无限的复杂. 它很新,却又比尘埃更古老. 分形是什么?它们是从哪里来的?我们为什么要在乎? 20世纪非传统的数学家Benoit Mandelbrot在19 ...
- Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”
1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...
- 画完三角形再画谢尔宾斯基地毯
照样废话不说,看代码看注释 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import jav ...
- 按钮动作监听器和鼠标监听器的同时实现,在画图板上画出三角形,射线,曲笔,谢尔宾斯基三角形,谢尔宾斯基地毯Random类的实现,数组的实现,Thread.sleep的实现
按钮动作监听器和鼠标监听器的实现 实例化 实现 监听器的类 DrawListener dl = new DrawListener();// 在界面上添加鼠标监听器对象(鼠标监听器的对象可以是界面和按钮 ...
- 谢尔宾斯基地毯的讲解
谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构造,而谢尔宾斯基三角形采用的等边三角形进行分形构造.谢尔 ...
- Python实验舱谢尔宾斯基地毯绘制教程
谢尔宾斯基地毯,和谢尔宾斯基三角形相似,下图就是谢尔宾斯基地毯 一,起始代码 p.width(3) p.speed(10) import turtle n=int(input()) base=int( ...
最新文章
- 云端应用SQL注入攻击
- HTML fieldset 标签 -- 表单分组
- XML Schema用法
- 深入了解ibatis源码----简单ibatis示例代码
- 欢乐纪中A组周六赛【2019.5.18】
- fiddler,他和其他抓包软件有什么区别,如何使用fiddler进行抓包
- fiddler工具条、状态栏、请求信息栏各按钮的作用
- mcldownload文件夹_《我的世界》中国版游戏空间精简教程 多余文件删除方法
- python 预测下一年数据 程序_python中神经网络预测时间序列数据
- ma5200g启用mpls l2***故障处理一则
- 数据迁移-商品数据迁移实践
- linux java 错误日志_求大神解决啊啊 啊,看看这个怎么了,在LINUX运行完的错误日志...
- 软件测试简历制作技巧与方法
- GB/T 35273—2020《信息安全技术个人信息安全规范》正式发布
- uni-app框架、微信小程序项目
- 蓝凌OA 漏洞学习——treexml.tmpl 远程命令执行漏洞
- 软件项目如何进行任务分配,减少冲突?
- LVGL 获取光标坐标位置
- 【初学者必看】vlc实现的rtsp服务器及转储H264文件
- 建峰化工:被错杀的低价绩优股
热门文章
- 手机拍照反差对焦、相位对焦和激光对焦系统解析
- 停止精神内耗 每日分享
- Deep-Learned Regularization and Proximal Operator for Image Compressive Sensing
- 高通8953 Android 9.0 在user模式下使用fastboot烧录
- Oracle RAC Failover 说明
- 以某SCI期刊为例说明该期刊投稿须知和流程
- 【机器视觉】二维码检测(QR 码)
- POI生成Word水印watermark(兼容WPS)的终极解决方案
- 我的世界1.16.1java模组怎么加,我的世界1.16(minecraft1.16)全新模组推荐
- ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...