UVALive5642 UVa706 HDU1332 LC-Display【打印图案】

Regionals 1999 >> Europe - Mid-Central
Regionals 1999 >> Europe - Southwestern


问题链接UVALive5642 UVa706 HDU1332 LC-Display

问题描述参见上文。

问题分析

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

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

需要注意,每组数据后有一个空行,每个数字之间有一个空格(最后一个数字后面没有空格。这是特殊的地方,需要注意)。

程序说明

(略)

参考链接:(略)



AC的C++语言程序:

/* UVALive5642 UVa706 HDU1332 LC-Display */

#include <iostream>
#include <cstdio>
#include <cstring>

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;
    char s[100];

    while(scanf("%d%s", &n, s) != EOF && n) {
        for(int i=0; i<2*n+3; i++) {                // 行控制
            for(int j=0; j<(int)strlen(s); j++) {     // 列控制
                if(j != 0)
                    printf(" ");
                zoom(typematrix[s[j] - '0'][getrow(i, n)], n);
            }
            printf("
");
        }
        printf("
");
    }

    return 0;
}



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