1 条题解

  • 0
    @ 2048-5-20 10:52:07

    【深基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

    信息

    ID
    87
    时间
    1000ms
    内存
    125MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者