模拟,老老实实地将字符串转化成数字运算,再转换成字符串输出.
对于字符串转数字:
1. ”1”(..#) “4”(#.#) “+”(...) 比较特殊,它们的第一行都是没有别的数与其重复的,可以直接特判;
2. 同理,再将“2” “3” 和 “5” “6” 放在一起判断;
3. 再将"7" "0" 和 "8" "9" 放在一起判断(其实都差不多啦).
对于数字转字符串:
老实一行一行输出,如果是最后一个数字就不输出末尾的 '.' .(如果有更好的方法请赐教,勿喷)
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
string s[10];
void print(int x) {
string str;
while(x) {
str.push_back((x % 10) + '0');
x /= 10;
}
for(int i = str.length() - 1;i >= 0;i--) {
switch(str[i] - 48) {
case 0 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 1 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 2 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 3 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 4 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 5 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 6 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 7 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 8 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 9 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
}
}
printf("\n");
for(int i = str.length() - 1;i >= 0;i--) {
switch(str[i] - 48) {
case 0 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 1 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 2 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 3 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 4 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 5 : {if(i == 0) {printf("#.."); break;} printf("#..."); break;}
case 6 : {if(i == 0) {printf("#.."); break;} printf("#..."); break;}
case 7 : {if(i == 0) {printf("#.#"); break;} printf("..#."); break;}
case 8 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 9 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
}
}
printf("\n");
for(int i = str.length() - 1;i >= 0;i--) {
switch(str[i] - 48) {
case 0 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 1 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 2 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 3 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 4 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 5 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 6 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 7 : {if(i == 0) {printf("#.#"); break;} printf("..#."); break;}
case 8 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 9 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
}
}
printf("\n");
for(int i = str.length() - 1;i >= 0;i--) {
switch(str[i] - 48) {
case 0 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 1 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 2 : {if(i == 0) {printf("#.."); break;} printf("#..."); break;}
case 3 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 4 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 5 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 6 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 7 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 8 : {if(i == 0) {printf("#.#"); break;} printf("#.#."); break;}
case 9 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
}
}
printf("\n");
for(int i = str.length() - 1;i >= 0;i--) {
switch(str[i] - 48) {
case 0 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 1 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 2 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 3 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 4 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 5 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 6 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 7 : {if(i == 0) {printf("..#"); break;} printf("..#."); break;}
case 8 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
case 9 : {if(i == 0) {printf("###"); break;} printf("###."); break;}
}
}
printf("\n\n");
}
int main() {
scanf("%d",&n);
for(int i = 1;i <= n;i++) {
int a = 0,t = 0;
for(int j = 0;j < 5;j++)
cin >> s[j];
for(int j = 0;j < s[0].length();j += 4) {
if(s[0][j] == '.' && s[0][j+1] == '.' && s[0][j+2] == '.') {
a += t;
t = 0;
}
else if(s[0][j] == '.' && s[0][j+2] == '#')
t = (t << 1) + (t << 3) + 1;
else if(s[0][j] == '#' && s[0][j+1] == '.' && s[0][j+2] == '#')
t = (t << 1) + (t << 3) + 4;
else {
if(s[1][j] == '.' && s[1][j+2] == '#') {
if(s[3][j] == '#')
t = (t << 1) + (t << 3) + 2;
else if(s[3][j+2] == '#')
t = (t << 1) + (t << 3) + 3;
}
else if(s[1][j] == '#' && s[1][j+2] == '.') {
if(s[3][j] == '#')
t = (t << 1) + (t << 3) + 6;
else t = (t << 1) + (t << 3) + 5;
}
else if(s[2][j+1] == '.') {
if(s[3][j] == '#')
t = (t << 1) + (t << 3);
else t = (t << 1) + (t << 3) + 7;
}
else if(s[3][j] == '#')
t = (t << 1) + (t << 3) + 8;
else t = (t << 1) + (t << 3) + 9;
}
}
a += t;
print(a);
getchar(); getchar();
}
return 0;
}

京公网安备 11010502036488号