算法进阶指南 分形

问题描述

分形,具有以非整数维形式充填空间的形态特征。通常被定义为:

“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。

现在,定义“盒子分形”如下:

一级盒子分形:

X

二级盒子分形:

X XX
X X

若用 B(n - 1) 表示第 n - 1 级盒子分形,那么第 n 级盒子分形的结构为:

B(n - 1)        B(n - 1)B(n - 1)B(n - 1)        B(n - 1)

即在一个大的框架中由 5 个 B(n - 1) 的图块构成——上下左右 4 个角以及中间部分。


输入格式

  • 输入包含多个测试用例。
  • 每个测试用例为一行,包含一个不大于 7 的正整数 n,表示输出第 n 级的盒子分形。
  • 输入的最后一行为 -1,表示输入结束。

输出格式

  • 对于每个测试用例,输出由字符 X 组成的对应等级的盒子分形图案。
  • 每个测试用例输出完后单独输出一行,仅包含一个短横线 -,作为分隔符。

输入样例

1
2
3
4
-1

输出样例

X
-
X XX
X X
-
X X   X XX     X
X X   X XX XXX X
X X   X XX     X
X X   X X
-
X X   X X         X X   X XX     X           X     X
X X   X X         X X   X XX X               X XX                 XX X               X X
X X   X X         X X   X XX     X           X     X
X X   X X         X X   X XX X   X XX     XX X   X XX XXX XX X   X XX     XX X   X X
X X   X X         X X   X XX     X           X     X
X X   X X         X X   X XX X               X XX                 XX X               X X
X X   X X         X X   X XX     X           X     X
X X   X X         X X   X X
-

c++代码

#include<bits/stdc++.h>using namespace std;vector<vector<string>> result(8);vector<string> op(int x) {if (result[x].size() > 0) return result[x];vector<string> ans((int)(pow(3, x - 1)));if (x == 1) {ans[0] = "X";return ans;}vector<string> last = op(x - 1);int k = (int)pow(3, x - 2), w = 0;for (int i = 0; i < last.size(); i++, w++) {for (int j = 0; j < last[i].size(); j++) ans[w] += last[i][j];for (int j = 0; j < k; j++) ans[w] += " ";for (int j = 0; j < last[i].size(); j++) ans[w] += last[i][j];}for (int i = 0; i < last.size(); i++, w++) {for (int j = 0; j < k; j++) ans[w] += " ";for (int j = 0; j < last[i].size(); j++) ans[w] += last[i][j];for (int j = 0; j < k; j++) ans[w] += " ";}for (int i = 0; i < last.size(); i++, w++) {for (int j = 0; j < last[i].size(); j++) ans[w] += last[i][j];for (int j = 0; j < k; j++) ans[w] += " ";for (int j = 0; j < last[i].size(); j++) ans[w] += last[i][j];}return ans;
}int main() {int n;for (int i = 1; i <= 7; i++) {result[i] = op(i);}while(cin >> n) {if (n == -1) break;vector<string> strs = result[n];for (string s : strs) {for (char a : s) {cout << a;}cout << endl;}cout << "-" << endl;}return 0;
}//by wqs

找规律的题目

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

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

相关文章

18-产品经理-跟踪进度

禅道是一个可以帮助产品经理跟踪研发进度的系统。通过禅道&#xff0c;产品经理可以从多个角度了解产品的研发状态。在仪表盘中&#xff0c;可以展示所有产品或单一产品的概况&#xff0c;包括需求、计划和发布数量&#xff0c;研发需求状态&#xff0c;Bug修复率和计划发布数。…

LeetCode算法题(Go语言实现)_36

题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节点…

深度解析:文件或目录损坏且无法读取的应对之道

引言 在数字化办公与数据存储日益普及的今天&#xff0c;我们时常会遭遇各种数据问题&#xff0c;其中“文件或目录损坏且无法读取”这一状况尤为令人头疼。无论是个人用户存储在电脑硬盘、移动硬盘、U盘等设备中的重要文档、照片、视频&#xff0c;还是企业服务器上的关键业务…

数据库如何确定或计算 LSN(日志序列号)

目录 如何确定或计算 LSN&#xff08;日志序列号&#xff09;**一、获取当前 LSN****二、确定日志解析的起始 LSN****三、LSN 与物理文件的映射****四、应用场景** 如何确定或计算 LSN&#xff08;日志序列号&#xff09; LSN&#xff08;Log Sequence Number&#xff09;是数…

[ctfshow web入门] web24

前置知识 isset&#xff1a;判断这个变量是否声明且不为NULL&#xff0c;否则返回False mt_srand&#xff1a;设置随机数种子&#xff0c;如果不手动设置&#xff0c;那么系统会自动进行一次随机种子的设置 mt_rand&#xff1a;生成一个随机数&#xff0c;这个随机数与种子有个…

习题与正则表达式

思路&#xff1a; 二分查找&#xff1a; left 1&#xff08;最小可能距离&#xff09;&#xff0c;right L&#xff08;最大可能距离&#xff09;。 每次取 mid (left right) / 2&#xff0c;判断是否可以通过增设 ≤ K 个路标使得所有相邻路标的距离 ≤ mid。 贪心验证…

最小K个数

文章目录 题意思路代码 题意 题目链接 思路 代码 class Solution { public:vector<int> smallestK(vector<int>& arr, int k) {priority_queue<int> Q;for (auto &index:arr){Q.push(index);if (Q.size() > k)Q.pop();}vector<int> ans…

<tauri><rust><GUI>基于rust和tauri,将tauri程序打包为window系统可安装的安装包(exe、msi)

前言 本文是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。 发文平台 CSDN 环境配置 系统:windows 10平台:visual studio code语言:rust、javascript库:taur…

SAP系统采购信息记录失效

问题&#xff1a;采购信息记录失效 现象&#xff1a;最初主数据导入完成之后&#xff0c;单元测试的时采购信息记录是有效的&#xff0c;中间经过配置的变化&#xff0c;集成测试初期发现采购信息记录全部失效。 原因&#xff1a; 单元测试时发现采购订单里面的条件类型…

视频分析设备平台EasyCVR打造汽车门店经营场景安全:AI智慧安防技术全解析

一、方案背景 某电动车企业不停爆出维权新闻&#xff0c;支持和反对的声音此起彼伏&#xff0c;事情不断发酵、反转&#xff0c;每天都有新消息&#xff0c;令人目不暇接。车展、车店作为维权事件的高发场所&#xff0c;事后复盘和责任认定时&#xff0c;安防监控和视频监控平…

ecovadis认证基本概述,ecovadis认证审核有效期

EcoVadis认证基本概述 1. 什么是EcoVadis认证&#xff1f; EcoVadis是全球领先的企业可持续发展&#xff08;ESG&#xff09;评级平台&#xff0c;专注于评估企业在**环境&#xff08;E&#xff09;、劳工与人权&#xff08;S&#xff09;、商业道德&#xff08;L&#xff09…

初入Web网页开发

1、网页哪些内容 1.1 三个核心文件的作用 index.html&#xff1a;网页的骨架&#xff0c;用HTML编写网页结构和内容。 script.js&#xff1a;网页的行为&#xff0c;用JavaScript实现交互功能&#xff08;如按钮点击事件&#xff09;。 styles.css&#xff1a;网页的外观&…

CSS 符号

在 CSS 中&#xff0c;& 符号是 嵌套语法中的父选择器引用符&#xff0c;主要用于 CSS 预处理器&#xff08;如 Sass、Less、Stylus&#xff09;和 现代 CSS 嵌套语法&#xff08;CSS Nesting&#xff09;。它代表当前选择器的父级&#xff0c;用于简化嵌套规则并生成更精确…

小白入门JVM、字节码、类加载机制图解

前提知识~ JDK 基本介绍 JDK 的全称(Java Development Kit Java 开发工具包)JDK JRE java 的开发工具[java, javac,javadoc,javap 等]JDK 是提供给Java 开发人员使用的&#xff0c;其中包含了java 的开发工具&#xff0c;也包括了JRE。可开发、编译、调试…… JRE 基本介绍…

consul服务注册与发现(go)-学习笔记

参考博客 1、服务实例接口与默认实现 type ServiceInstance interface {// 获取服务实例的唯一IDGetInstanceId() string// 获取服务IDGetServiceId() string// 获取服务实例的主机名或IP地址GetHost() string// 获取服务实例的端口号GetPort() int// 判断服务实例是否使用HT…

【AI】prompt engineering

prompt engineering ## prompt engineering ## prompt engineering ## prompt engineering 一、定义 Prompt 工程&#xff08;Prompt Engineering&#xff09;是指在使用语言模型&#xff08;如 ChatGPT、文心一言等&#xff09;等人工智能工具时&#xff0c;设计和优化输入提…

Python 字典和集合(常见的映射方法)

本章内容的大纲如下&#xff1a; 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响&#xff08;什么样的数据类型可作为键、不可预知的 顺序&#xff0c;等等&#xff09; 常见的映射方法 映射类型…

对抗Prompt工程:构建AI安全护栏的攻防实践

大语言模型的开放性与自然语言交互特性使其面临前所未有的Prompt工程攻击威胁。本文通过分析2021-2023年间157个真实越狱案例&#xff0c;揭示语义混淆、上下文劫持、多模态组合三重攻击路径的技术原理&#xff0c;提出融合动态意图拓扑分析&#xff08;DITA&#xff09;、对抗…

STL c++ list——模拟实现

结点类的模拟实现 list是一个带头双向循环链表 因需要实现一个节点类&#xff0c;其中包含哨兵位&#xff08;用来标识位置&#xff09;&#xff0c;节点信息&#xff08;val数据&#xff0c;prev后指针&#xff0c;next后指针&#xff09; template<class T> struct …

ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射

DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…