四级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++四级练习 luogu-P5730 【深基5.例10】显示屏
📅 2025-07-26·✍️ OneCoder·计算中...·⏱️ 8 分钟
#GESP#C++#多维数组
GESP C++四级,多维(二维)数组应用练习,难度⭐⭐★☆☆。
luogu-P5730 【深基5.例10】显示屏
题目要求
题目描述
液晶屏上,每个阿拉伯数字都是可以显示成 的点阵的(其中
X表示亮点,.表示暗点)。现在给出数字位数(不超过 )和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。
输入格式
第一行输入一个正整数 ,表示数字的位数。
第二行输入一个长度为 的自然数。
输出格式
输出五行,表示显示屏上的数字。
输入输出样例 #1
输入 #1
PLAINTEXT
10
0123456789
输出 #1
PLAINTEXT
XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX
X.X...X...X...X.X.X.X...X.....X.X.X.X.X
X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX
X.X...X.X.....X...X...X.X.X...X.X.X...X
XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX
说明/提示
数据保证,。
题目分析
解题思路
本题的解题思路如下:
-
数据结构设计
- 使用二维字符串数组存储数字显示样式
- 数组大小为 5×10,对应每个数字的 3×5 显示区域
- 每个数字之间需要一列间隔
-
初始化显示样式
- 需要初始化0-9十个数字的显示样式
- 每个数字由 "X" 和 "." 组成
- 使用二维数组
array[5][10]存储
-
输入处理
- 读入数字位数
- 读入 位数字字符串
- 数据范围:
-
输出实现
- 按行输出,共5行
- 每行需要遍历所有数字
- 每个数字之间添加一个 "." 作为间隔
- 每行末尾换行
-
算法分析
- 时间复杂度:
- 为数字位数
- 每个数字需要输出固定大小的显示样式
- 空间复杂度:
- 使用固定大小的二维数组存储显示样式
- 输入字符串最大长度为
- 时间复杂度:
示例代码
CPP
#include <iostream>
// 定义5x10的字符串数组,用于存储0-9数字的显示样式
std::string array[5][10];
int main() {
// 数字0的显示样式
array[0][0] = "XXX";
array[1][0] = "X.X";
array[2][0] = "X.X";
array[3][0] = "X.X";
array[4][0] = "XXX";
// 数字1的显示样式
array[0][1] = "..X";
array[1][1] = "..X";
array[2][1] = "..X";
array[3][1] = "..X";
array[4][1] = "..X";
// 数字2的显示样式
array[0][2] = "XXX";
array[1][2] = "..X";
array[2][2] = "XXX";
array[3][2] = "X..";
array[4][2] = "XXX";
// 数字3的显示样式
array[0][3] = "XXX";
array[1][3] = "..X";
array[2][3] = "XXX";
array[3][3] = "..X";
array[4][3] = "XXX";
// 数字4的显示样式
array[0][4] = "X.X";
array[1][4] = "X.X";
array[2][4] = "XXX";
array[3][4] = "..X";
array[4][4] = "..X";
// 数字5的显示样式
array[0][5] = "XXX";
array[1][5] = "X..";
array[2][5] = "XXX";
array[3][5] = "..X";
array[4][5] = "XXX";
// 数字6的显示样式
array[0][6] = "XXX";
array[1][6] = "X..";
array[2][6] = "XXX";
array[3][6] = "X.X";
array[4][6] = "XXX";
// 数字7的显示样式
array[0][7] = "XXX";
array[1][7] = "..X";
array[2][7] = "..X";
array[3][7] = "..X";
array[4][7] = "..X";
// 数字8的显示样式
array[0][8] = "XXX";
array[1][8] = "X.X";
array[2][8] = "XXX";
array[3][8] = "X.X";
array[4][8] = "XXX";
// 数字9的显示样式
array[0][9] = "XXX";
array[1][9] = "X.X";
array[2][9] = "XXX";
array[3][9] = "..X";
array[4][9] = "XXX";
// 读入数字的位数
int n;
std::cin >> n;
// 读入n位数字字符串
std::string str;
std::cin >> str;
// 按行输出数字的显示效果
for (int i = 0; i < 5; i++) {
for (int j = 0; j < n; j++) {
// 输出当前数字的当前行
std::cout << array[i][str[j] - '0'];
// 除了最后一个数字,每个数字后面都要加一个点
if (j != n - 1) {
std::cout << ".";
}
}
// 每行结束换行
std::cout << "\n";
}
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 四级⏱️ 7 分钟
【GESP】C++四级练习 luogu-P5729 【深基5.例7】工艺品制作
GESP C++四级练习,二维/多维数组练习,难度★★☆☆☆。
阅读全文 →
GESP 编程与算法 · 四级⏱️ 7 分钟
【GESP】C++四级练习 luogu-P2550 [AHOI2001] 彩票摇奖
GESP C++四级练习,二维/多维数组练习,难度★★☆☆☆。
阅读全文 →
GESP 编程与算法 · 四级⏱️ 13 分钟
【GESP】C++四级练习 luogu-P2615 [NOIP 2015 提高组] 神奇的幻方
GESP C++四级练习,多维数组练习,难度★★☆☆☆。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!