2026年6月GESP真题及题解(C++二级):菱形

2026年6月GESP真题及题解(C++二级):菱形

题目描述

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

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

..+.. .+.+. +...+ .+.+. ..+..
输入格式

输入一个正整数n nn;

输出格式

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

输入输出样例 1输入 1
4
输出 1
...+... ..+.+.. .+...+. +.....+ .+...+. ..+.+.. ...+...
说明/提示数据范围

3 ≤ n ≤ 15 3 \le n \le 153≤n≤15。

思路分析

题目要求在( 2 n − 1 ) × ( 2 n − 1 ) (2n-1)\times(2n-1)(2n−1)×(2n−1)的网格中绘制一个边长为n nn的菱形轮廓,其中菱形边上的格子用+,其余用.。

对于一个以中心点( n − 1 , n − 1 ) (n-1,n-1)(n−1,n−1)为对称中心的菱形,其边界上的点满足曼哈顿距离正好等于n − 1 n-1n−1。

即对于任意格子( i , j ) (i,j)(i,j)(0 ≤ i , j < 2 n − 1 0 \le i,j < 2n-10≤i,j<2n−1),当

∣ i − ( n − 1 ) ∣ + ∣ j − ( n − 1 ) ∣ = n − 1 |i-(n-1)| + |j-(n-1)| = n-1∣i−(n−1)∣+∣j−(n−1)∣=n−1

时该格子属于菱形边,输出+,否则输出.。

这是因为在曼哈顿距离定义下,所有到中心距离为常数的点构成一个菱形(旋转45°的正方形),而边长n nn的菱形轮廓恰好对应距离为n − 1 n-1n−1的环。

因此我们只需两层循环遍历所有行和列,根据上述条件判断并输出对应字符即可。


代码实现

#includeusingnamespacestd;intmain(){intn;cin>>n;intm=2*n-1;// 画布总大小intc=n-1;// 中心坐标和距离阈值for(inti=0;i<m;i++){// 行for(intj=0;j<m;j++){// 列if(abs(i-c)+abs(j-c)==c)cout<<'+';// 曼哈顿距离等于阈值则边elsecout<<'.';// 否则空白}cout<<endl;// 换行}return0;}

功能分析

  • 输入:一个正整数n nn(3 ≤ n ≤ 15 3 \le n \le 153≤n≤15)。
  • 处理:根据曼哈顿距离公式判断每个格子是否在菱形边上。
  • 输出:打印2 n − 1 2n-12n−1行,每行2 n − 1 2n-12n−1个字符,构成指定菱形图案。
  • 复杂度:O ( n 2 ) O(n^2)O(n2),对于n ≤ 15 n \le 15n≤15非常高效。

各种学习资料,助力大家一站式学习和提升!!!

#includeusingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转 https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划: https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL: https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践: https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解: https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#includeusingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}