Emag eht htiw Em Pleh
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2034 | Accepted: 1374 |
Description
This problem is a reverse case of the
problem 2996. You are given the output of the problem H and your task is to find the corresponding input.
Input
according to output of
problem 2996.
Output
according to input of
problem 2996.
Sample Input
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4 Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
Sample Output
+---+---+---+---+---+---+---+---+ |.r.|:::|.b.|:q:|.k.|:::|.n.|:r:| +---+---+---+---+---+---+---+---+ |:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.| +---+---+---+---+---+---+---+---+ |...|:::|.n.|:::|...|:::|...|:p:| +---+---+---+---+---+---+---+---+ |:::|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |...|:::|...|:::|.P.|:::|...|:::| +---+---+---+---+---+---+---+---+ |:P:|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |.P.|:::|.P.|:P:|...|:P:|.P.|:P:| +---+---+---+---+---+---+---+---+ |:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.| +---+---+---+---+---+---+---+---+
Source
相对好处理一些,比上一题
#include <iostream>
#include <string>
using namespace std;
int status[10][10];
char str[10][10];
string s1;
int main()
{
void dealwhite();
void dealblack();
int i,j,n,m,s,t;
int k;
cin>>s1;
memset(status,0,sizeof(status));
if(s1=="White:")
{
k=1;
}else
{
k=2;
}
cin>>s1;
if(k==1)
{
dealwhite();
}else
{
dealblack();
}
cin>>s1;
cin>>s1;
if(k==1)
{
dealblack();
}else
{
dealwhite();
}
for(i=1;i<=8;i++)
{
cout<<"+---+---+---+---+---+---+---+---+"<<endl;
for(j=1;j<=8;j++)
{
cout<<"|";
if(!status[i][j])
{
if((i+j)%2==0)
{
cout<<"...";
}else
{
cout<<":::";
}
}else
{
if((i+j)%2==0)
{
cout<<"."<<str[i][j]<<".";
}else
{
cout<<":"<<str[i][j]<<":";
}
}
}
cout<<'|'<<endl;
}
cout<<"+---+---+---+---+---+---+---+---+"<<endl;
return 0;
}
void dealwhite()
{
int i,j,l,x,y;
char s3[5];
l=s1.size();
int top=0;
for(i=0;i<=l;i++)
{
if(s1[i]!=','&&s1[i]!='\0')
{
s3[top++]=s1[i];
}else
{
if(top==2)
{
y=s3[0]-'a'+1;
x=8-(s3[1]-'0')+1;
status[x][y]=1;
str[x][y]='P';
}else if(top==3)
{
y=s3[1]-'a'+1;
x=8-(s3[2]-'0')+1;
status[x][y]=1;
str[x][y]=s3[0];
}
top=0;
}
}
}
void dealblack()
{
int i,j,l,x,y;
char s3[5];
l=s1.size();
int top=0;
for(i=0;i<=l;i++)
{
if(s1[i]!=','&&s1[i]!='\0')
{
s3[top++]=s1[i];
}else
{
if(top==2)
{
y=s3[0]-'a'+1;
x=8-(s3[1]-'0')+1;
status[x][y]=1;
str[x][y]='p';
}else if(top==3)
{
y=s3[1]-'a'+1;
x=8-(s3[2]-'0')+1;
status[x][y]=1;
str[x][y]=s3[0]+32;
}
top=0;
}
}
}