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;
}
浙公网安备 33010602011771号