POJ1102 LC-Display【打印图案】

问题链接POJ1102 LC-Display

问题描述参见上文。

问题分析

首先需要一个字模数组,然后进行放大。

每行有多个字,同时需要考虑放大后行数会增加。

需要注意,每组数据后有一个空行,每个数字后有一个空格,每一行后面多一个空格(特殊的地方,需要注意)。

程序说明

这个问题与《UVALive5642 UVa706 HDU1332 LC-Display》是同一问题,然而测试数据有所不同。这个程序的输出的每行后面有一个空格,其他则不允许。

参考链接UVALive5642 UVa706 HDU1332 LC-Display



AC的C++语言程序:

/* POJ1102 LC-Display */

#include <iostream>
#include <cstdio>

using namespace std;

string typematrix[10][5] = {
    {
        " - ",
        "| |",
        "   ",
        "| |",
        " - "
    },
    {
        "   ",
        "  |",
        "   ",
        "  |",
        "   "
    },
    {
        " - ",
        "  |",
        " - ",
        "|  ",
        " - "
    },
    {
        " - ",
        "  |",
        " - ",
        "  |",
        " - "
    },
    {
        "   ",
        "| |",
        " - ",
        "  |",
        "   "
    },
    {
        " - ",
        "|  ",
        " - ",
        "  |",
        " - "
    },
    {
        " - ",
        "|  ",
        " - ",
        "| |",
        " - "
    },
    {
        " - ",
        "  |",
        "   ",
        "  |",
        "   "
    },
    {
        " - ",
        "| |",
        " - ",
        "| |",
        " - "
    },
    {
        " - ",
        "| |",
        " - ",
        "  |",
        " - "
    }
};

int getrow(int row, int multiple)
{
    if(row == 0)
        return 0;   // 第1行
    else if(row < multiple + 1)
        return 1;   // 第2行
    else if(row == multiple + 1)
        return 2;   // 第3行
    else if(row == 2 * multiple + 2)
        return 4;   // 第5行
    else
        return 3;   // 第4行
}

void zoom(string& s, int n)
{
    printf("%c",s[0]);
    for(int i=0; i<n; i++) {
        printf("%c", s[1]);
    }
    printf("%c", s[2]);
}

int main()
{
    int n;
    string s;

    while(cin >> n >> s && n) {
        for(int i=0; i<2*n+3; i++) {            // 行控制
            for(int j=0; j<(int)s.length(); j++) {     // 列控制
                zoom(typematrix[s[j] - '0'][getrow(i, n)], n);
                cout << " ";
            }
            cout << endl;
        }
        cout << endl;
    }

    return 0;
}



原文地址:https://www.cnblogs.com/tigerisland/p/7563772.html