首页 > 代码库 > 【HDOJ】1332 LC-Display
【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]] = ‘\0‘; 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 // 4101 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 else112 addC(n, i, j, RIGHT);113 }114 }115 }116 117 // 5118 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 else127 addC(n, i, j, RIGHT);128 }129 }130 }131 132 // 6133 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 else142 addC(n, i, j, BOTH);143 }144 }145 }146 147 // 7148 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 // 8162 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 // 9174 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 else183 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\n", lcd[i][n][j]);195 }196 printf("\n\n");197 }198 printf("output finish\n");199 }200 201 int main() {202 int n;203 int i, j, k;204 char s[15];205 206 #ifndef ONLINE_JUDGE207 freopen("data.in", "r", stdin);208 freopen("data.out", "w", stdout);209 #endif210 211 init();212 //output(1);213 214 while (scanf("%d %s", &n, s) != EOF) {215 if (n==0 && s[0]==‘0‘ && s[1]==‘\0‘)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 else222 printf("%s", lcd[s[i]-‘0‘][n][j]);223 }224 printf("\n");225 }226 printf("\n");227 }228 229 return 0;230 }
【HDOJ】1332 LC-Display
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。