[递归与栈]The Sierpinski Fractal

news2024/11/18 19:42:35

描述

Consider a regular triangular area, divide it into four equal triangles of half height and remove the one in the middle. Apply the same operation recursively to each of the three remaining triangles. If we repeated this procedure infinite times, we'd obtain something with an area of zero. The fractal that evolves this way is called the Sierpinski Triangle. Although its topological dimension is 2, its Hausdorff-Besicovitch dimension is log(3)/log(2)~1.58, a fractional value (that's why it is called a fractal). By the way, the Hausdorff-Besicovitch dimension of the Norwegian coast is approximately 1.52, its topological dimension being 1.

For this problem, you are to outline the Sierpinski Triangle up to a certain recursion depth, using just ASCII characters. Since the drawing resolution is thus fixed, you'll need to grow the picture appropriately. Draw the smallest triangle (that is not divided any further) with two slashes, to backslashes and two underscores like this:

 /\
/__\

To see how to draw larger triangles, take a look at the sample output.

输入

The input contains several testcases. Each is specified by an integer n. Input is terminated by n=0. Otherwise 1<=n<=10 indicates the recursion depth.

输出

For each test case draw an outline of the Sierpinski Triangle with a side's total length of 2n characters. Align your output to the left, that is, print the bottom leftmost slash into the first column. The output must not contain any trailing blanks. Print an empty line after each test case.

样例输入

3
2
1
0

样例输出

       /\
      /__\
     /\  /\
    /__\/__\
   /\      /\
  /__\    /__\
 /\  /\  /\  /\
/__\/__\/__\/__\

   /\
  /__\
 /\  /\
/__\/__\

 /\
/__\

提示


The Sierpinski-Triangle up to recursion depth 7

解题分析

观察样例输入输出得到规律性结果,然后进一步地推导出表达式,以及存储上一个三角形的思想,把每一行都正确地表达,最后递归地调用,直到成功生成了我们想要的那个阶数的三角形后再停止。因为我们发现了一个三角形与三角形之间的一个递推公式吧,然后不断地反复调用即可。

代码实现
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <bitset>
#define MAXN 1050
using namespace std;

string triangle[MAXN];
string tmp[MAXN];
int N;

void f(int n){
	if(n==N+1){
		int len=pow(2,N);
		for(int i=0;i<len;i++){
			cout<<triangle[i]<<endl;
		}
		return;
	}
	if(n==1){
		triangle[0]=tmp[0]=" /\\";
		triangle[1]=tmp[1]="/__\\";
	}
	else{
		int len=pow(2,n);
		string tmp1;
		for(int i=0;i<len/2;i++){
			tmp1+=' ';
		}
		for(int i=0;i<len/2;i++){
			triangle[i]=tmp1+tmp[i];
		}
		for(int i=len/2,m=0,j=pow(2,n-2)*2-1;i<len;i++,j--,m++){
			tmp1="";
			for(int i=0;i<j;i++){
				tmp1+=' ';
			}
			triangle[i]=tmp[m]+tmp1+tmp[m];
		}
		for(int i=0;i<len;i++){
			tmp[i]=triangle[i];
		}
	}
	f(n+1);
}

int main(){
	int n;
	while(cin>>n){
		if(n==0) break;
		N=n;
		f(1);
		cout<<endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我劝你别惹“女”项目经理

她来了她来了&#xff0c;她带着项目进度走来了&#xff01;&#xff01;&#xff01; 在职场的江湖里&#xff0c;流传着一个传说&#xff0c;那便是“女”项目经理的神话。她们&#xff0c;是团队中的“铁娘子”&#xff0c;是项目里的“指挥官”&#xff0c;更是无数人心中的…

商城小程序:颠覆传统电商,打造全新商业生态

在数字化浪潮的推动下&#xff0c;网购行业呈现多元化繁荣发展态势&#xff0c;出现了琳琅满目的商品应用小程序&#xff0c;但市面上的商城小程序基本属于通用型&#xff0c;无论是商城界面展示和基本功能&#xff0c;都不能满足个性化和商品推广需求&#xff0c;阻碍了商品的…

故障记录---docker僵死

故障现象&#xff1a; docker进程僵死&#xff0c;docker命令无法使用 处理过程&#xff1a; 查看docker进程状态&#xff0c;显示句柄数过多&#xff0c;于是重启了docker [rootdata02 opt]# systemctl status docker ● docker.service - Docker Application Container Eng…

这13个常用电路基础公式,每一位电子工程师都要牢记

计算电阻电路中电流、电压、电阻和功率之间的关系。 欧姆定律解释了电压、电流和电阻之间的关系&#xff0c;即通过导体两点间的电流与这两点间的电势差成正比。说明两点间的电压差、流经该两点的电流和该电流路径电阻之间关系的定律。该定律的数学表达式为V IR&#xff0c;其中…

Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口

前言 本篇文章我们来使用 Supabase 实现 RESTful 风格的 API 接口&#xff0c;以此来实现网站分类和子站点的 CURD 功能。 表设计 这里需要用到两张表&#xff1a; ds_categorys&#xff1a;存储网站分类 列名类型备注iduuid主键&#xff0c;分类 idnametext分类名称desct…

重学java 76.JDK新特性 ② 函数式接口

Looking to the future is the order of the day, no worrying about old news —— 24.6.19 一、函数式接口 1.定义 有且只有一个抽象方法的接口 2.检测 FunctionalInterface 3.示例 FunctionalInterface public interface USB {void open(String s); }public class Demo3…

【碳排放控排1006】碳排放控排企业名单数据集,探索绿色生产!

今天给大家分享的是国内顶级期刊2023发表论文《碳排放规制、企业减排激励与全要素生产率——基于中国碳排放权交易机制的准自然实验》中使用到的重要数据集——碳排放控排企业名单&#xff0c;该论文从企业生产效率视角对论文进行研究&#xff0c;发现碳排放权交易机制显著提升…

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架

红米手机RedNot11无法使用谷歌框架&#xff0c;打开游戏闪退的问题&#xff0c; 1.问题描述2.问题原因3.解决方案3.1配置谷歌框架&#xff1a;3.1软件优化 4.附图 1.问题描述 红米手机打开安卓APP没有广告&#xff0c;直接闪退&#xff0c;无法使用谷歌框架 异常关键词中包含&…

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

开源大语言模型完整列表 Large Language Model (LLM) 即大规模语言模型&#xff0c;是一种基于深度学习的自然语言处理模型&#xff0c;它能够学习到自然语言的语法和语义&#xff0c;从而可以生成人类可读的文本。 所谓"语言模型"&#xff0c;就是只用来处理语言文…

数字时代的创新:二人共益订单模式解析

一、引言 随着数字技术的飞速发展&#xff0c;商业模式也日新月异。其中&#xff0c;“二人共益订单模式”凭借其独特的互助与共赢理念&#xff0c;迅速在市场中获得关注。该模式不仅为用户提供了优质服务和独享优惠&#xff0c;更通过用户间的互助和订单共享&#xff0c;实现…

js语音识别,语音转文字,speech recognition(需要翻墙才能识别)

先上代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>test</title> </head><body><div id"…

技术与创意并驾齐驱:打造扭蛋机小程序的独特魅力

引言 扭蛋机小程序以其独特的玩法和吸引力&#xff0c;在移动互联网市场中崭露头角。本文将深入探讨如何通过技术与创意的并驾齐驱&#xff0c;打造扭蛋机小程序的独特魅力。 一、技术驱动&#xff1a;打造稳定高效的小程序平台 在扭蛋机小程序的开发过程中&#xff0c;技术是…

中国500米分辨率年平均LAI数据集(2000-2020)

叶面积指数LAI(Leaf Area Index)是描述植被冠层几何结构的基本参数之一&#xff0c;被定义为单位地表面积上所有叶片面积的倍数&#xff0c;它控制着植被的许多生物物理过程&#xff0c;如光合作用、呼吸作用、蒸腾作用、碳循环和降水截获等&#xff0c;是陆面过程一个十分重要…

推荐一个很好用的Latex写代码的软件

软件名称&#xff1a;Axmath 据说是国产软件&#xff0c;好用是真好用&#xff08;去哪找&#xff1f;比如某地球号的公主号或其他地方&#xff09;我是推荐付费购买使用 1.通过图形操作&#xff0c;选择要转成Latex代码的符号&#xff0c;按下转换&#xff0c;直接就出现了我…

植物大战僵尸杂交版V2.1快速刷金币的方法(新号适用,无需自带招财猫)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 1. &#x1f4bb;游戏介绍 2. &#x1f525;快速刷取金币的办法&#xff08;我是新号测试的&#xff09; 2.1 无招财猫 2.2 有招财猫 《植物大战僵尸杂交版》是一款在原版《植物大战僵尸》基础上进行了创新的塔防…

『大模型笔记』如何让小型语言模型发挥作用!

如何让小型语言模型发挥作用! 文章目录 一. 如何让小型语言模型发挥作用!不可能的可能性小模型的潜力创新方法与突破实践与验证过滤系统与数据质量小模型的逐步改进信息理论蒸馏方法(新工作InfoSum)总结与展望Infini-Gram与N-gram模型的新时代后缀数组与高速计算二. 参考文献…

怪物猎人物语什么时候上线?游戏售价多少?

怪物猎人物语是一款全新的RPG游戏&#xff0c;玩家在游戏中将化身为骑士&#xff0c;不断与怪物建立羁绊、不断成长&#xff0c;踏上前往外面世界的旅程&#xff0c;且最终目的地是以狩猎怪物为生的猎人世界。因为最近有不少玩家在关注这款游戏&#xff0c;所以下面就给大家分享…

Linux 式套娃,把“文件系统”安装在一个“文件”上?

背景 “文件”在文件系统之中&#xff0c;这是人人理解的概念。但“文件”之上还有一个文件系统&#xff1f;那岂不是成套娃了。但这个其实是可以的。这个就涉及到今天我们要讲的 loop 设备。 很多童鞋在学习 Linux 的文件系统时&#xff0c;涉及到对磁盘设备的格式化&#x…

2024年AIGC行业研究:多模态大模型与商业应用

2024年2月&#xff0c;OpenAI发布其首款视频生成模型Sora&#xff0c;用户仅需输入一段文字即可生成长达一分钟场景切换流畅、细节呈现清晰、情感表达准确的高清视频&#xff0c;与一年前的AI生成视频相比&#xff0c;在各维度均实现了质的提升。这一突破再次将AIGC推向大众视野…

JavaScript运行原理和执行过程

参考&#xff1a; https://www.cnblogs.com/hexrui/p/15939592.html 1、执行上下文栈&#xff08;调用栈&#xff09; GECGlobal Execution Context&#xff08;GEC&#xff09;被放入到ECS&#xff08;Execution Context Stack&#xff0c;简称ECS&#xff09;中 GEC开始执…