2026年【江苏“信息与未来”编程思维】真题及题解(T3:南京名片)
题目描述
Dr. X 要给南京展会设计巨幅广告,图案由两个大写字母 N、J 组成。给定一个正整数n nn,表示字母的大小。你需要按照以下规则输出这两个字母,并且两个字母之间恰好用一个空格隔开:
- 字母 N 由一个n × n n \times nn×n的方阵组成。第一列和最后一列需要涂黑,并且从左上角到右下角的主对角线也要涂黑。
- 字母 J 由一个n × n n \times nn×n的方阵组成。第一行需要涂黑,中间那一列(即第⌊ n / 2 ⌋ + 1 \lfloor n/2 \rfloor + 1⌊n/2⌋+1列)从第一行到最后一行也涂黑,最后一行从第一列到中间列也涂黑。
- 涂黑的位置用星号
*表示,其余位置为空格,注意不是数值为0 00的 ASCII 字符。行末的空格不影响评分。
输入格式
输入一个正整数n nn。
输出格式
输出n nn行,每行包含两个由单个空格隔开的字母图案。
输入输出样例 1
输入 1
5输出 1
* * ***** ** * * * * * * * ** * * * ***输入输出样例 2
输入 2
3输出 2
* * *** *** * * * **说明/提示
- 当n = 5 n = 5n=5时,需要分别构造大小为5 × 5 5 \times 55×5的字母 N、J,并按顺序输出,且相邻字母之间恰好保留一个空格。
- 当n = 3 n = 3n=3时,字母规模最小,更容易看出 N 的主对角线、J 的中间列和底边。
数据规模
- 对于60 % 60\%60%的数据,满足n ≤ 10 n \le 10n≤10。
- 对于100 % 100\%100%的数据,满足3 ≤ n ≤ 50 3 \le n \le 503≤n≤50,且保证n nn为奇数。
思路分析
- 两个字母都画在n × n n\times nn×n的方阵上,所以每一行可以先画出字母 N 的 n 个字符,再输出一个空格,再画出字母 J 的 n 个字符。
- 使用 0 开始的下标:
- 字母 N:
- 第 0 列:
j == 0 - 最后一列:
j == n-1 - 主对角线:
i == j
满足上述任一条件就是*,否则是空格。
- 第 0 列:
- 字母 J:
- 第一行:
i == 0 - 中间列:中间列是第
n/2+1列,0-based 下标为n/2 - 最后一行从第 0 列到中间列:
i == n-1 && j <= n/2
满足任一条件就是*,否则是空格。
- 第一行:
- 字母 N:
- 每行把 N 串、一个空格、J 串拼接后输出即可。
代码实现
#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){cin>>n;intm=n/2+1;//中间列for(inti=0;i<n;i++){string a,b;a.resize(n);b.resize(n);for(intj=0;j<n;j++){//N:边界/主对角线if(j==0||j==n-1||i==j)a[j]='*';elsea[j]=' ';//J:顶行/中间列/底行左半if(i==0||j==m-1||(i==n-1&&j<=m-1))b[j]='*';elseb[j]=' ';}string s=a+" "+b;cout<<s<<'\n';}return0;}功能分析
- 输入正整数 n,计算出字母 J 的中间列位置。
- 对每一行,分别生成字母 N 和字母 J 的当前行字符串。
- 用单个空格连接两个字母的当前行,并去掉行末多余空格后输出。
- 时间复杂度O ( n 2 ) O(n^2)O(n2),空间复杂度 O(n)。
更多内容请关注专栏:信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
【秘籍汇总】(完整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 点击跳转
· 文末祝福 ·
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}