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; }