http://poj.org/problem?id=2993
上一周的训练还没做完,唉。只能延续第一周的训练计划了。和pku2996正好过程相反。。。谢模拟题实在是太费劲了。。细节细节注意。


#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str[20][40];
int main()
{
int i,j,k,l;
int len;
//首先排除字母构造整个表
for (i = 0; i < 17; i += 2)
{
for (j = 0; j < 33; ++j)
{
if (j%4 == 0)
str[i][j] = '+';
else
str[i][j] = '-';
}
}
int flag = 1;
for (i = 1; i < 17; i += 2)
{
if (flag)
{
flag = 0;
int pos = 0;
for (j = 0; j <= 28; j += 4)
{
str[i][j] = '|';
if (!pos)
{
pos = 1;
for (k = j + 1; k < j + 4; ++k)
str[i][k] = '.';
}
else
{
pos = 0;
for (k = j + 1; k < j + 4; ++k)
str[i][k] = ':';
}
}
str[i][j] = '|';
}
else
{
flag = 1;
int pos = 0;
for (j = 0; j <= 28; j += 4)
{
str[i][j] = '|';
if (!pos)
{
pos = 1;
for (k = j + 1; k < j + 4; ++k)
str[i][k] = ':';
}
else
{
pos = 0;
for (k = j + 1; k < j + 4; ++k)
str[i][k] = '.';
}
}
str[i][j] = '|';
}
}
//处理黑白
char pp[10];
char T[1007];
scanf("%s",pp);
scanf("%s",T);
//printf("%s%s\n",pp,T);
len = strlen(T);
char tmp[4] = {'0'};
l = 0;
int x,y;
for (i = 0; i < len; ++i)
{
if (T[i] == ',')
{
//printf(">>%s\n",tmp);
if (l == 3)
{
y = (tmp[1] - 'a')*4 + 2;
x = 17 - (tmp[2] - '0')*2;
str[x][y] = tmp[0];
}
else if (l == 2)
{
y = (tmp[0] - 'a')*4 + 2 ;
x = 17 - (tmp[1] - '0')*2;
str[x][y] = 'P';
}
l = 0;
tmp[0] = tmp[1] = tmp[2] = '0';
}
else
tmp[l++] = T[i];
}
if (l == 3)
{
y = (tmp[1] - 'a')*4 + 2;
x = 17 - (tmp[2] - '0')*2;
str[x][y] = tmp[0];
}
else if (l == 2)
{
y = (tmp[0] - 'a')*4 + 2;
x = 17 - (tmp[1] - '0')*2;
str[x][y] = 'P';
}
//printf(">%s\n",tmp);
tmp[0] = tmp[1] = tmp[2] = '0';
scanf("%s",pp);
scanf("%s",T);
//printf("%s%s\n",pp,T);
len = strlen(T);
l = 0;
for (i = 0; i < len; ++i)
{
if (T[i] == ',')
{
//printf("%s\n",tmp);
if (l == 3)
{
y = (tmp[1] - 'a')*4 + 2;
x = 17 - (tmp[2] - '0')*2;
str[x][y] = tmp[0] + 32;
}
else if (l == 2)
{
y = (tmp[0] - 'a')*4 + 2;
x = 17 - (tmp[1] - '0')*2;
str[x][y] = 'p';
}
l = 0;
tmp[0] = tmp[1] = tmp[2] = '0';
}
else
tmp[l++] = T[i];
}
if (l == 3)
{
y = (tmp[1] - 'a')*4 + 2;
x = 17 - (tmp[2] - '0')*2;
str[x][y] = tmp[0] + 32;
}
else if (l == 2)
{
y = (tmp[0] - 'a')*4 + 2;
x = 17 - (tmp[1] - '0')*2;
str[x][y] = 'p';
}
//printf("%s\n",tmp);
tmp[0] = tmp[1] = tmp[2] = '0';
for (i = 0; i < 17; ++i)
printf("%s\n",str[i]);
return 0;
}