当前位置: 首页 > news >正文

206. 2013年蓝桥杯省赛 - 打印十字图(困难)- 模拟

206. 打印十字图(模拟)

1. 2013年蓝桥杯省赛 - 打印十字图(困难)

标签:2013 模拟 省赛

1.1 题目描述

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见下图)

img

对方同时也需要在电脑 dos 窗口中以字符的形式输出该标志,并能任意控制层数。

为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。

1.2 输入描述

输入一个正整数 n (n < 30)n (n < 30) 表示要求打印图形的层数。

1.3 输出描述

输出对应包围层数的该标志。

1.4 输入输出样例

示例:

输入

1

输出

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..

1.5 运行限制

  • 最大运行时间:1s
  • 最大运行内存: 64M

2. 算法设计思路

2.1 图案构造逻辑

在这里插入图片描述

观察例图,我们会发现整个图案是 中心对称 的(即上下左右对称)。因此,我们只需要 构造左上角图案的一部分(第二象限),其余部分通过对称复制生成。

在这里插入图片描述

我们将整个图案看作是一个正方形的二维数组,其大小为 a × a,其中:
a = 2 n + 3 a = 2n + 3 a=2n+3

2.2 使用二维列表模拟图案(字符画)

在这里插入图片描述

由上图可知,我们可将这个图案拆为三部分:横线三角形竖线三角形对角线,代码如下所示。

# 开始绘图
for i in range(0, a, 2):# 画横线dp[i][i + 2:a] = ['$'] * (a - i - 2)# 画竖线for j in range(i + 2, a):dp[j][i] = '$'# 画对角线if i != 0:dp[i][i - 1] = dp[i][i] = dp[i - 1][i] = '$'

2.3 图案镜像复制

利用对称性:

  • 上半部分通过将每一行左半 + 右半逆序拼接;

在这里插入图片描述

  • 下半部分是上半部分的镜像,直接倒序输出即可。

在这里插入图片描述


3. 代码实现

n = int(input())# 先画第二象限
# 生成完整十字图的1/2边长
a = n * 2 + 3
# 生成底图
dp = [['.'] * a for _ in range(a)]# 开始绘图
for i in range(0, a, 2):# 画横线dp[i][i + 2:a] = ['$'] * (a - i - 2)# 画竖线for j in range(i + 2, a):dp[j][i] = '$'# 画对角线if i != 0:dp[i][i - 1] = dp[i][i] = dp[i - 1][i] = '$'# 输出上半部分(包括x轴)
for s in dp:print(''.join(s + s[a - 2::-1]))# 输出下半部分
for s in dp[a - 2::-1]:print(''.join(s + s[a - 2::-1]))

4. 复杂度分析

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2),因为我们绘制一个约为 4 n 2 4n^2 4n2 大小的图案矩阵。
  • 空间复杂度: O ( n 2 ) O(n^2) O(n2),用于二维字符数组的存储。

相关文章:

  • React Native 基础语法与核心组件:深入指南
  • 后进先出(LIFO)详解
  • 深入解析 sock_skb_cb_check_size 宏及其内核安全机制
  • Spring Boot + Vue 前后端分离项目解决跨域问题详解
  • 一套键鼠控制多台电脑
  • u盘插入电脑后显示无媒体,无盘符,无空间,无卷的修复办法
  • 在写外部FLASH的应用时发现一些问题,在这里分享一下我的想法
  • 【Dv3Admin】系统视图角色管理API文件解析
  • 在Word中使用 Microsoft Print to PDF和另存为PDF两种方式生成的 PDF文件
  • Docker 操作容器[SpringBoot之Docker实战系列] - 第538篇
  • bilibili-mcp 使用示例
  • JBank:Jucoin 推出的 Web3 去中心化自托管银行金融协议
  • 服务器硬防的应用场景都有哪些?
  • Deepin 25 安装字体
  • 第二部分-IP及子网划分
  • Golang dig框架与GraphQL的完美结合
  • 【117架AI无人机出击】乌克兰窃取4.4GB敏感数据,重创俄41架战机,损失超500亿元
  • 使用联邦学习进行CIFAR-10分类任务
  • 混合动力无人机设计与运行要点分析
  • 无人机动力系统核心技术解析
  • 网站建设定制开发价格/seo优化教程培训
  • 电商设备网站怎么做/东莞百度搜索优化
  • web service做网站/数据指数
  • 建设网站的岗位职责/外链怎么发
  • 学做衣服上什么网站好/奶茶店营销软文
  • ibm用来做测试的网站/南昌seo代理商