晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)「建议收藏」

晴天的魔法乐园——谢尔宾斯基地毯(递归打印图形)「建议收藏」题目链接:https://judger.net/problem/1061ProblemDescription谢尔宾斯基地毯是一种分形图案,它的定义如下:令F(n)表示嵌套n层的谢尔宾斯基地毯,那么(下面的“空”均表示空格,仅为示意,实际输出时应仍为空格)当n=1时,F(1)为:空当n=2时,F(2)为:空空空空X空空空空一般地,如果F(n-1)表示嵌…

大家好,又见面了,我是你们的朋友全栈君。

题目链接: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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158432.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • WebView中的视频全屏的相关操作

    WebView中的视频全屏的相关操作

    2021年11月30日
  • JAVA缓存机制_JAVA锁机制

    JAVA缓存机制_JAVA锁机制缓存可分为二大类:一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式; 二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.下面为一个简单的缓存代码Java代码package lhm.hcy.guge.frameset.cache;    import j

  • FPGA与VHDL_vhdl和verilog

    FPGA与VHDL_vhdl和verilogVHDL相对于VerilogHDL,给人最深刻的印象便是臃肿,掌握起来比较难。本文摘自《FPGA之道》,学会站在巨人的肩膀上来对比学习二者。

  • BulletedList用途

    BulletedList用途1.用作最普通的信息显示(列表方式)2.制作导航条BulletedList3中模式1.Text文本2.HyperLink连接2.LinkButton按钮BulletedList&#1

  • 人物索引及最近更新

    人物索引及最近更新按照人物的属性和武器种分类

  • 初识业务架构图_管理架构图

    初识业务架构图_管理架构图文章目录什么是业务架构图?业务架构图规范宏观微观设计步骤分层分模块分功能实例什么是业务架构图?是将用户需求进行宏观系统抽象进行描述和展示,是表达业务层级和关系的工具,目的是将简单的业务逻辑简单化,降低理解难度,这个图是给用户和各级领导看的。业务架构图规范宏观1.宏观:横向:并列结构,级别是相同的;纵向:要有分层的思想,整体上有层次感,上层是依赖于下层的,越底层的,越是基础服务,同时也更为重要;对称:要讲究对称美,尽可能地功能结构分配均匀;虚线框:多个模块,逻辑上可以归为一块时可以使用虚线

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号