• 【HDOJ】1332 LC-Display


    水题。

      1 #include <cstdio>
      2 #include <cstring>
      3 #include <cstdlib>
      4 
      5 #define MAXN 11
      6 #define LEFT  1
      7 #define RIGHT 2
      8 #define BOTH  3
      9 
     10 char lcd[10][MAXN][2*MAXN+3+1][MAXN+2+1];
     11 int rr[MAXN];
     12 int cc[MAXN];
     13 
     14 void addR(int x, int i, int j) {
     15     int k;
     16 
     17     for (k=1; k<cc[i]-1; ++k)
     18         lcd[x][i][j][k] = '-';
     19 }
     20 
     21 void addC(int x, int i,int j, int v) {
     22     if (v & LEFT)
     23         lcd[x][i][j][0] = '|';
     24     if (v & RIGHT)
     25         lcd[x][i][j][cc[i]-1] = '|';
     26 }
     27 
     28 void init() {
     29     int i, j, k;
     30     int n;
     31 
     32     for (i=1; i<=10; ++i) {
     33         rr[i] = 2*i+3;
     34         cc[i] = i+2;
     35     }
     36 
     37     memset(lcd, ' ', sizeof(lcd));
     38 
     39     for (k=0; k<10; ++k) {
     40         for (i=1; i<=10; ++i) {
     41             for (j=0; j<rr[i]; ++j) {
     42                 lcd[k][i][j][cc[i]] = '';
     43             }
     44         }
     45     }
     46 
     47     // 0
     48     n = 0;
     49     for (i=1; i<=10; ++i) {
     50         for (j=0; j<rr[i]; ++j) {
     51             if (j==0 || j==rr[i]-1) {
     52                 addR(n, i, j);
     53             } else if (j == i+1) {
     54                 /*do nothing*/;
     55             } else {
     56                 addC(n, i, j, BOTH);
     57             }
     58         }
     59     }
     60 
     61     // 1
     62     n = 1;
     63     for (i=1; i<=10; ++i) {
     64         for (j=0; j<rr[i]; ++j) {
     65             if (j==0 || j==i+1 || j==rr[i]-1) {
     66                 /*do nothing*/;
     67             } else {
     68                 addC(n, i, j, RIGHT);
     69             }
     70         }
     71     }
     72 
     73     // 2
     74     n = 2;
     75     for (i=1; i<=10; ++i) {
     76         for (j=0; j<rr[i]; ++j) {
     77             if (j==0 || j==i+1 || j==rr[i]-1) {
     78                 addR(n, i, j);
     79             } else {
     80                 if (j < i+1)
     81                     addC(n, i, j, RIGHT);
     82                 else
     83                     addC(n, i, j, LEFT);
     84             }
     85         }
     86     }
     87 
     88     // 3
     89     n = 3;
     90     for (i=1; i<=10; ++i) {
     91         for (j=0; j<rr[i]; ++j) {
     92             if (j==0 || j==i+1 || j==rr[i]-1) {
     93                 addR(n, i, j);
     94             } else {
     95                 addC(n, i, j, RIGHT);
     96             }
     97         }
     98     }
     99 
    100     // 4
    101     n = 4;
    102     for (i=1; i<=10; ++i) {
    103         for (j=0; j<rr[i]; ++j) {
    104             if (j==0 || j==rr[i]-1) {
    105                 /*do nothing*/;
    106             } else if (j == i+1) {
    107                 addR(n, i, j);
    108             } else {
    109                 if (j < i+1)
    110                     addC(n, i, j, BOTH);
    111                 else
    112                     addC(n, i, j, RIGHT);
    113             }
    114         }
    115     }
    116 
    117     // 5
    118     n = 5;
    119     for (i=1; i<=10; ++i) {
    120         for (j=0; j<rr[i]; ++j) {
    121             if (j==0 || j==i+1 || j==rr[i]-1) {
    122                 addR(n, i, j);
    123             } else {
    124                 if (j < i+1)
    125                     addC(n, i, j, LEFT);
    126                 else
    127                     addC(n, i, j, RIGHT);
    128             }
    129         }
    130     }
    131 
    132     // 6
    133     n = 6;
    134     for (i=1; i<=10; ++i) {
    135         for (j=0; j<rr[i]; ++j) {
    136             if (j==0 || j==i+1 || j==rr[i]-1) {
    137                 addR(n, i, j);
    138             } else {
    139                 if (j < i+1)
    140                     addC(n, i, j, LEFT);
    141                 else
    142                     addC(n, i, j, BOTH);
    143             }
    144         }
    145     }
    146 
    147     // 7
    148     n = 7;
    149     for (i=1; i<=10; ++i) {
    150         for (j=0; j<rr[i]; ++j) {
    151             if (j==0) {
    152                 addR(n, i, j);
    153             } else if (j==i+1 || j==rr[i]-1) {
    154                 /*do nothing*/;
    155             } else {
    156                 addC(n, i, j, RIGHT);
    157             }
    158         }
    159     }
    160 
    161     // 8
    162     n = 8;
    163     for (i=1; i<=10; ++i) {
    164         for (j=0; j<rr[i]; ++j) {
    165             if (j==0 || j==i+1 || j==rr[i]-1) {
    166                 addR(n, i, j);
    167             } else {
    168                 addC(n, i, j, BOTH);
    169             }
    170         }
    171     }
    172 
    173     // 9
    174     n = 9;
    175     for (i=1; i<=10; ++i) {
    176         for (j=0; j<rr[i]; ++j) {
    177             if (j==0 || j==i+1 || j==rr[i]-1) {
    178                 addR(n, i, j);
    179             } else {
    180                 if (j < i+1)
    181                     addC(n, i, j, BOTH);
    182                 else
    183                     addC(n, i, j, RIGHT);
    184             }
    185         }
    186     }
    187 }
    188 
    189 void output(int n) {
    190     int i, j, k;
    191 
    192     for (i=0; i<10; ++i) {
    193         for (j=0; j<rr[n]; ++j) {
    194             printf("%s
    ", lcd[i][n][j]);
    195         }
    196         printf("
    
    ");
    197     }
    198     printf("output finish
    ");
    199 }
    200 
    201 int main() {
    202     int n;
    203     int i, j, k;
    204     char s[15];
    205 
    206 #ifndef ONLINE_JUDGE
    207     freopen("data.in", "r", stdin);
    208     freopen("data.out", "w", stdout);
    209 #endif
    210 
    211     init();
    212     //output(1);
    213 
    214     while (scanf("%d %s", &n, s) != EOF) {
    215         if (n==0 && s[0]=='0' && s[1]=='')
    216             break;
    217         for (j=0; j<rr[n]; ++j) {
    218             for (i=0; s[i]; ++i) {
    219                 if (i)
    220                     printf(" %s", lcd[s[i]-'0'][n][j]);
    221                 else
    222                     printf("%s", lcd[s[i]-'0'][n][j]);
    223             }
    224             printf("
    ");
    225         }
    226         printf("
    ");
    227     }
    228 
    229     return 0;
    230 }
  • 相关阅读:
    Mvc 简单分页代码
    算法
    atx
    Java8函数式编程(A)
    axios
    props
    vue 的keep alive使用注意项
    android帮助
    testng监听器方法执行顺序
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4116662.html
Copyright © 2020-2023  润新知