1 条题解
-
0
【深基5.例10】显示屏
解题思路
为 0~9 分别保存 5 行、每行 3 列的点阵。输出第 r 行时,依次拼接每个数字点阵的第 r 行,数字之间加一个点。
正确性说明
每个数字取出同一行并按原数字顺序横向连接,五轮输出就构成完整显示屏。
易错点
间隔是点号,不是空格;保留数字串前导零。
复杂度
数字串长度 n,时间 O(n),空间 O(n),点阵表大小固定。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string glyph[10][5] = { {"XXX", "X.X", "X.X", "X.X", "XXX"}, {"..X", "..X", "..X", "..X", "..X"}, {"XXX", "..X", "XXX", "X..", "XXX"}, {"XXX", "..X", "XXX", "..X", "XXX"}, {"X.X", "X.X", "XXX", "..X", "..X"}, {"XXX", "X..", "XXX", "..X", "XXX"}, {"XXX", "X..", "XXX", "X.X", "XXX"}, {"XXX", "..X", "..X", "..X", "..X"}, {"XXX", "X.X", "XXX", "X.X", "XXX"}, {"XXX", "X.X", "XXX", "..X", "XXX"}}; int n; string s; cin >> n >> s; for (int r = 0; r < 5; r++) { for (int i = 0; i < n; i++) { if (i) cout << "."; cout << glyph[s[i] - '0'][r]; } cout << "\n"; } return 0; }
- 1