news 2026/7/5 1:00:56

题解:洛谷 B4554 [GESP202606 二级] 菱形

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
题解:洛谷 B4554 [GESP202606 二级] 菱形

【题目来源】

洛谷:B4554 [GESP202606 二级] 菱形 - 洛谷

【题目描述】

给定正整数n nn,在( 2 n − 1 ) × ( 2 n − 1 ) (2n - 1) \times (2n - 1)(2n1)×(2n1)个网格的画布中,使用字符画一个边长为n nn个网格的菱形。其中,空白网格使用⋅ \cdot表示,菱形边所在的网格用+ ++表示。

例如当n = 3 n = 3n=3时,图形如下:

..+.. .+.+. +...+ .+.+. ..+..

【输入】

输入一个正整数n nn

【输出】

输出2 n − 1 2n - 12n1行,表示按要求画的菱形。

【输入样例】

4

【输出样例】

...+... ..+.+.. .+...+. +.....+ .+...+. ..+.+.. ...+...

【核心思想】

  1. 问题分析:给定正整数n nn,在( 2 n − 1 ) × ( 2 n − 1 ) (2n-1) \times (2n-1)(2n1)×(2n1)的画布上绘制边长为n nn的菱形边框。菱形中心位于画布中心( n , n ) (n, n)(n,n),边框由+组成,其余位置为.。关键观察是:菱形的上半部分和下半部分关于中心行对称,每行的+出现在两个对称位置,且距离中心列的偏移量随远离中心而增大。

  2. 算法选择

    • 对称绘制法:将菱形分为上半部分(含中心行)和下半部分(含中心行),利用对称性分别绘制
    • 边界收缩/扩展:用双指针l llr rr表示当前行菱形边框的左右列坐标,上半部分l ll递减、r rr递增,下半部分同理
  3. 关键步骤

    • 初始化画布:创建( 2 n − 1 ) × ( 2 n − 1 ) (2n-1) \times (2n-1)(2n1)×(2n1)的字符矩阵,全部填充为.
    • 确定中心:中心位置为( n , n ) (n, n)(n,n),初始化l = r = n l = r = nl=r=n
    • 绘制上半部分i ii1 11n nn):
      • ( i , l ) (i, l)(i,l)( i , r ) (i, r)(i,r)处标记+
      • l ← l − 1 l \leftarrow l - 1ll1r ← r + 1 r \leftarrow r + 1rr+1(下一行菱形变宽)
    • 绘制下半部分i ii2 n − 1 2n-12n1n nn):
      • 重置l = r = n l = r = nl=r=n,从底部向中心行绘制
      • ( i , l ) (i, l)(i,l)( i , r ) (i, r)(i,r)处标记+
      • l ← l − 1 l \leftarrow l - 1ll1r ← r + 1 r \leftarrow r + 1rr+1(上一行菱形变宽)
    • 输出画布:按行输出矩阵
  4. 时间/空间复杂度

    • 时间复杂度:O ( n 2 ) O(n^2)O(n2),初始化画布O ( n 2 ) O(n^2)O(n2),绘制边框O ( n ) O(n)O(n),输出O ( n 2 ) O(n^2)O(n2)
    • 空间复杂度:O ( n 2 ) O(n^2)O(n2),存储( 2 n − 1 ) × ( 2 n − 1 ) (2n-1) \times (2n-1)(2n1)×(2n1)的画布矩阵
  5. 对称绘制法的核心思想

    • 几何对称性利用:菱形关于水平中心线和垂直中心线均对称,因此只需计算一侧的坐标规律,通过对称复制完成另一半
    • 双指针控制边界l llr rr从中心列向两侧扩展,每行偏移量增加1 11,精确刻画菱形边框的斜线特征(斜率为± 1 \pm 1±1
    • 先填充后覆盖:先将整个画布置为.,再在特定位置覆盖+,避免复杂的条件判断,简化绘制逻辑
    • 中心行重复绘制:上半部分和下半部分的循环均包含中心行,导致中心行的两个+被绘制两次(效果相同),代码简洁但存在冗余
    • 适用于规则几何图形的字符画绘制,尤其是具有对称性的多边形边框生成

【算法标签】

#普及- #模拟

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=20;// 常量:数组最大尺寸chara[2*N][2*N];// a[i][j]: 画布上第 i 行第 j 列的字符intn;// n: 菱形边长intmain(){cin>>n;// 读入菱形边长 nfor(inti=1;i<=2*n-1;i++)// 初始化画布:全部填充为 '.'for(intj=1;j<=2*n-1;j++)a[i][j]='.';// 空白网格用 '.' 表示intx=n;// x: 菱形的中心行(同时也是中心列)intl=x,r=x;// l: 当前行菱形左边界列; r: 当前行菱形右边界列for(inti=1;i<=x;i++)// 绘制菱形的上半部分(含中心行){a[i][l]='+',a[i][r]='+';// 在当前行左右边界标记 '+'l--,r++;// 下一行左边界左移,右边界右移,菱形逐渐变宽}l=x,r=x;// 重置左右边界到中心列for(inti=2*n-1;i>=x;i--)// 绘制菱形的下半部分(含中心行){a[i][l]='+',a[i][r]='+';// 在当前行左右边界标记 '+'l--,r++;// 上一行左边界左移,右边界右移,菱形逐渐变宽}for(inti=1;i<=2*n-1;i++)// 输出画布{for(intj=1;j<=2*n-1;j++)cout<<a[i][j];// 输出第 i 行第 j 列的字符cout<<endl;// 每行输出后换行}return0;}

【运行结果】

4 ...+... ..+.+.. .+...+. +.....+ .+...+. ..+.+.. ...+...
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 1:00:05

基于EGEUNet的烟叶病害智能识别系统设计与实现

1. 项目概述&#xff1a;烟叶病害智能识别系统这个项目实现了一套完整的烟叶病害语义分割系统&#xff0c;基于改进的EGEUNet神经网络架构。不同于传统的分类识别&#xff0c;语义分割能精确到像素级别标注病害区域&#xff0c;为精准农业提供可视化分析工具。系统包含三大核心…

作者头像 李华
网站建设 2026/7/5 0:57:02

如何免费下载国家中小学智慧教育平台电子课本PDF:完整指南

如何免费下载国家中小学智慧教育平台电子课本PDF&#xff1a;完整指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内容。 项目…

作者头像 李华
网站建设 2026/7/5 0:54:49

LSTM 超参数网格搜索:记忆单元、批次大小与 Dropout 的 3 维对比实验

LSTM超参数网格搜索&#xff1a;记忆单元、批次大小与Dropout的3维对比实验当我在处理一个时间序列预测项目时&#xff0c;曾花费整整两周时间调整LSTM的超参数&#xff0c;最终发现记忆单元数从32增加到64时验证损失下降了15%&#xff0c;而进一步增加到128反而导致训练时间翻…

作者头像 李华
网站建设 2026/7/5 0:41:14

Java毕业设计-基于 JavaWeb 的美容美发管理系统的设计与实现 美容院会员消费预约管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/5 0:37:36

国产大模型生存四道生死线:成本、适配、进化与变现

1. 这不是选美比赛&#xff0c;而是技术路线的生存博弈“国内AI大模型已近80个&#xff0c;哪个最有前途&#xff1f;”——这句话最近在技术群、投资人会议和高校实验室里被反复抛出&#xff0c;语气里带着三分好奇、四分焦虑、三分务实。它不像“哪个手机拍照更好”那样有直观…

作者头像 李华
网站建设 2026/7/5 0:34:37

gInk:让屏幕标注像呼吸一样自然的数字画笔

gInk&#xff1a;让屏幕标注像呼吸一样自然的数字画笔 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你有没有经历过这样的尴尬时刻&#xff1f;在重要的线上会议中&am…

作者头像 李华