上海计算机学会2026年1月月赛C++丙组T4 分形十字
分形十字内存限制: 256 Mb时间限制: 1000 ms题目描述给定一个整数 N请打印出一个级别为 N 的分形十字分形十字定义如下0 级分形十字是1 级分形十字是.. ..2 级分形十字是........ ...... ........ ...... ...... ........ ...... ........总结来说当 k0 时k 级分形十字是将五个 k−1 级的分形十字摆放在上、下、左、右、中而四角用 . 填充成一个更大的十字。输入格式单个整数表示N输出格式一个分形十字图案由 和 . 组成的多行字符串数据范围0≤N≤7样例数据输入1输出.. ..分形十字 题解C实现基于给定的C代码以下是分形十字题解的核心逻辑与执行流程解析保留原代码逻辑不做修改。整体设计思想代码采用递归DFS 数组填充的方式实现分形十字核心逻辑如下分形十字的边长为3N3^N3NN为级别因此先计算出总边长m3Nm3^Nm3N用全局二维字符数组存储图案数组大小2200×2200足够覆盖N≤7的场景因为3721873^72187372187递归函数dfs负责填充十字的关键位置先填充中心的子十字再将中心内容复制到上、下、左、右四个方向同时将四角填充为.。#includebits/stdc.husingnamespacestd;// 全局二维字符数组存储分形十字图案// 大小2200×2200因题目N≤73^721872200足够容纳且避免越界chara[2200][2200];/** * 递归填充分形十字的DFS函数 * param s 当前子区域的左上角起始坐标1-based索引 * param x 当前子区域的边长 */voiddfs(ints,intx){// 递归终止条件x1对应0级分形十字仅单个if(x1){// 在当前子区域的中心位置s,s放置a[s][s];return;}// 将当前边长除以3得到下一级子区域的边长x/3;// 递归填充当前区域中心的k-1级分形十字// sx是中心子区域的左上角坐标原区域起始子边长dfs(sx,x);// 遍历中心子区域的所有位置将内容复制到上、下、左、右四个方向// 中心子区域范围行[i]从sx到sxx-1列[j]同理for(intisx;isxx;i){for(intjsx;jsxx;j){// 向上复制当前行向上偏移x行a[i-x][j]a[i][j];// 向下复制当前行向下偏移x行a[ix][j]a[i][j];// 向左复制当前列向左偏移x列a[i][j-x]a[i][j];// 向右复制当前列向右偏移x列a[i][jx]a[i][j];// 填充四角为.保证分形十字的四角无a[i-x][j-x].;// 上左角a[ix][j-x].;// 下左角a[i-x][jx].;// 上右角a[ix][jx].;// 下右角}}}intmain(){// 读取输入的分形级别Nintn;cinn;// 计算分形十字的总边长3^n0级11级32级9...intm1;for(inti1;in;i){m*3;}// 调用DFS函数从整个图案的左上角(1,1)开始填充n级分形十字dfs(1,m);// 遍历二维数组逐行打印分形十字图案for(inti1;im;i){for(intj1;jm;j){couta[i][j];}// 每行打印完后换行cout\n;}return0;}关键变量与函数解析1. 全局数组a[2200][2200]作用存储分形十字的每个位置字符初始时数组值为随机值但递归过程中会覆盖为或.大小2200×2200满足题目中N≤7的最大边长2187需求避免数组越界。2. 递归函数dfs(int s, int x)参数说明s当前子区域的左上角起始坐标代码采用1-based索引即从1开始计数x当前子区域的边长。执行逻辑终止条件0级十字当x1时在当前子区域的中心即坐标(s,s)放置直接返回递归分解将当前边长x除以3得到下一级子区域的边长记为新的x填充中心子十字调用dfs(sx, x)填充当前区域中心的k-1级十字复制中心内容到四向遍历中心子区域的所有位置将每个位置的字符复制到上方a[i-x][j] a[i][j]i-x为当前行向上偏移x行下方a[ix][j] a[i][j]ix为当前行向下偏移x行左方a[i][j-x] a[i][j]j-x为当前列向左偏移x列右方a[i][jx] a[i][j]jx为当前列向右偏移x列填充四角为.将中心子区域四个对角的位置上左、下左、上右、下右设为.保证四角无。3. 主函数main()步骤1读取输入的级别n步骤2计算总边长m通过循环将1乘以3共n次得到m3nm3^nm3n步骤3调用dfs(1, m)从整个图案的左上角坐标1,1开始填充n级十字步骤4双重循环遍历数组逐行打印分形十字图案。样例执行过程输入n1以输入1为例拆解代码执行流程main函数中n1计算m31×3调用dfs(1, 3)x3≠1执行x/3→x1调用dfs(11, 1) dfs(2,1)x1触发终止条件设置a[2][2]返回进入循环i从112到111-12即i2j同理从2到2执行循环内逻辑a[2-1][2] a[2][2]→a[1][2]上方a[21][2] a[2][2]→a[3][2]下方a[2][2-1] a[2][2]→a[2][1]左方a[2][21] a[2][2]→a[2][3]右方四角设为.a[1][1].、a[3][1].、a[1][3].、a[3][3].打印数组第1行a[1][1]a[1][2]a[1][3]→..第2行a[2][1]a[2][2]a[2][3]→第3行a[3][1]a[3][2]a[3][3]→..最终输出与样例一致。总结代码核心是递归分解中心复制将k级十字分解为中心的k-1级十字再复制到四向四角填充.坐标采用1-based索引递归函数的s是子区域起始坐标x是子区域边长数组大小2200×2200适配N≤7的最大边长避免越界递归终止条件对应0级十字的单个。

相关新闻

javaWeb从入门到进阶(SpringBoot原理及bean对象)

javaWeb从入门到进阶(SpringBoot原理及bean对象)

配置优先级: SpringBoot中支持三种格式的配置文件: application.properties-----application.yml------application.yaml 如果三个都配置同一属性端口了,到底哪个配置文件生效? 经过验证:application.properties&g…

2026/5/17 1:31:20 阅读更多 →
Flink 弹性伸缩(Elastic Scaling)Adaptive Scheduler、Reactive Mode 与外部资源声明

Flink 弹性伸缩(Elastic Scaling)Adaptive Scheduler、Reactive Mode 与外部资源声明

1. 弹性伸缩到底解决什么问题? 核心问题不是“能不能调并发”,而是“资源经常不稳定”: 提交时集群 slot 不够:以前要么卡住、要么失败、要么你手动降并发重提运行中 TaskManager 掉线:默认调度器可能触发失败/重启策略…

2026/5/17 1:31:18 阅读更多 →
Java性能优化你真的玩明白了吗?

Java性能优化你真的玩明白了吗?

作为一个程序员,性能优化是常有的事情,不管你是刚入行的小白还是已经入坑了很久的小秃头都会经历很多不同层次的性能优化——小到代码审查大到整个系统设计的优化!大势所趋之下,如何让自己的优化方向精准到性能瓶颈的那个点以及尽…

2026/5/17 1:31:17 阅读更多 →

最新新闻

内蒙古本地实体企业线上获客指南:GEO + 官网 + 短视频组合打法

内蒙古本地实体企业线上获客指南:GEO + 官网 + 短视频组合打法

对于内蒙古的实体企业,尤其是制造业工厂、商贸经销商、本地服务商而言,客源高度集中在本地及周边盟市,传统线下拓客成本越来越高,线上获客又常常找不到精准方向,泛流量多、意向客户少。针对本地实体企业的特性&#xf…

2026/7/3 1:58:20 阅读更多 →
手把手教你用OpenCV和YOLO搭建实时目标检测系统(毕设实战)

手把手教你用OpenCV和YOLO搭建实时目标检测系统(毕设实战)

临近毕业季,很多计算机、电子信息、人工智能相关专业的同学都在为毕设选题和实现发愁。特别是计算机视觉方向,听起来高大上,但面对复杂的算法、庞大的代码库和繁琐的环境配置,往往让人望而却步。如果你也正为“基于深度学习的XX检…

2026/7/3 1:56:19 阅读更多 →
直流电机静音控制方案:H桥驱动与PID算法实践

直流电机静音控制方案:H桥驱动与PID算法实践

1. 项目背景与核心器件选型在工业自动化和消费电子领域,直流电机控制一直是个经典课题。传统PWM调速方案虽然成本低廉,但开关噪声问题始终困扰着对声学敏感的应用场景。这次我们选用东芝的TB9051FTG驱动芯片搭配Microchip的PIC18F46K20 MCU,构…

2026/7/3 1:54:19 阅读更多 →
Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统?

Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统?

Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统? 【免费下载链接】operating-system :beginner: Home Assistant Operating System 项目地址: https://gitcode.com/gh_mirrors/op/operating-system Home Assistant Ope…

2026/7/3 1:54:19 阅读更多 →
股票研究信息处理:AI工具在资讯、财报与复盘环节的辅助作用

股票研究信息处理:AI工具在资讯、财报与复盘环节的辅助作用

普通投资者做股票研究时,最容易陷入信息过载与流程混乱:每天要刷大量资讯、读研报、翻财报,还要做盯盘记录与复盘总结,零散的信息很难沉淀成体系,反复查找资料又浪费大量时间。我实际用下来,AI工具的核心价…

2026/7/3 1:52:19 阅读更多 →
Tokio 背压:异步不是无限接请求的许可证

Tokio 背压:异步不是无限接请求的许可证

Tokio 背压:异步不是无限接请求的许可证 Tokio 让 Rust 服务能优雅处理大量连接,但异步不是无限接请求的许可证。没有背压的异步系统,会把压力藏进 channel、任务队列、buffer 和下游连接池里。表面上线程没阻塞,实际内存和尾延迟…

2026/7/3 1:52:19 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻