【HDOJ】1332 LC-Display
2014-11-23 16:02
411 查看
水题。
#include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 11 #define LEFT 1 #define RIGHT 2 #define BOTH 3 char lcd[10][MAXN][2*MAXN+3+1][MAXN+2+1]; int rr[MAXN]; int cc[MAXN]; void addR(int x, int i, int j) { int k; for (k=1; k<cc[i]-1; ++k) lcd[x][i][j][k] = '-'; } void addC(int x, int i,int j, int v) { if (v & LEFT) lcd[x][i][j][0] = '|'; if (v & RIGHT) lcd[x][i][j][cc[i]-1] = '|'; } void init() { int i, j, k; int n; for (i=1; i<=10; ++i) { rr[i] = 2*i+3; cc[i] = i+2; } memset(lcd, ' ', sizeof(lcd)); for (k=0; k<10; ++k) { for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { lcd[k][i][j][cc[i]] = '\0'; } } } // 0 n = 0; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==rr[i]-1) { addR(n, i, j); } else if (j == i+1) { /*do nothing*/; } else { addC(n, i, j, BOTH); } } } // 1 n = 1; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { /*do nothing*/; } else { addC(n, i, j, RIGHT); } } } // 2 n = 2; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { if (j < i+1) addC(n, i, j, RIGHT); else addC(n, i, j, LEFT); } } } // 3 n = 3; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { addC(n, i, j, RIGHT); } } } // 4 n = 4; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==rr[i]-1) { /*do nothing*/; } else if (j == i+1) { addR(n, i, j); } else { if (j < i+1) addC(n, i, j, BOTH); else addC(n, i, j, RIGHT); } } } // 5 n = 5; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { if (j < i+1) addC(n, i, j, LEFT); else addC(n, i, j, RIGHT); } } } // 6 n = 6; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { if (j < i+1) addC(n, i, j, LEFT); else addC(n, i, j, BOTH); } } } // 7 n = 7; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0) { addR(n, i, j); } else if (j==i+1 || j==rr[i]-1) { /*do nothing*/; } else { addC(n, i, j, RIGHT); } } } // 8 n = 8; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { addC(n, i, j, BOTH); } } } // 9 n = 9; for (i=1; i<=10; ++i) { for (j=0; j<rr[i]; ++j) { if (j==0 || j==i+1 || j==rr[i]-1) { addR(n, i, j); } else { if (j < i+1) addC(n, i, j, BOTH); else addC(n, i, j, RIGHT); } } } } void output(int n) { int i, j, k; for (i=0; i<10; ++i) { for (j=0; j<rr ; ++j) { printf("%s\n", lcd[i] [j]); } printf("\n\n"); } printf("output finish\n"); } int main() { int n; int i, j, k; char s[15]; #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); freopen("data.out", "w", stdout); #endif init(); //output(1); while (scanf("%d %s", &n, s) != EOF) { if (n==0 && s[0]=='0' && s[1]=='\0') break; for (j=0; j<rr ; ++j) { for (i=0; s[i]; ++i) { if (i) printf(" %s", lcd[s[i]-'0'] [j]); else printf("%s", lcd[s[i]-'0'] [j]); } printf("\n"); } printf("\n"); } return 0; }
相关文章推荐
- hdu 1332 LC-Display
- hdu 1332 LC-Display
- 杭电hdu 1332 LC-Display 简单题
- HDU 1332 LC-Display
- LC-Display
- poj1102——LC-Display
- POJ 1102 LC-Display(模拟题)
- LC-Display
- UVa Problem Solution: 706 - LC-Display
- LC-Display
- PC110104(液晶显示屏)(LC-Display)
- 706 - LC-Display
- poj 1102 LC—display
- 110104 LC-Display
- PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)题解
- UVa 706 LC-Display
- UVA 706 LC-Display
- LC-Display代码
- LC-Display
- poj1102 LC-Display