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.|
+---+---+---+---+---+---+---+---+
這個題用了最笨的方法,結果RE了兩次,調試了好久,原理就不說了,衰。。。
[cpp]
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
char a[18][34]={
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'},
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'},
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}};
int main()
{
int i,j;
/*for(i=0;i<17;i++)
{
for(j=0;j<33;j++)
{
cout<<a[i][j];
}
cout<<endl;
}*/
char white[1000];
char black[1000];
int lenw,lenb;
gets(white);
gets(black);
//cout<<white<<endl;
//cout<<black<<endl;
lenw=strlen(white);
lenb=strlen(black);
/* for(i=0;i<17;i++)
{
for(j=0;j<33;j++)
{
cout<<a[i][j];
}
cout<<endl;
}*/
i=7;
for(i=7;i<lenw;i+=4)
{
if(white[i]>=65&&white[i]<=90)//判斷第8個字符是不是大寫字母。
a[(9-(white[i+2]-'0'))*2-1][(white[i+1]-'a')*4+2]=white[i];
else//不是就撤,表示後面只有P了
break;
}
for(j=i;j<lenw;j+=3)
{
if(white[j]>=97&&white[j]<=122)//判斷有沒有小寫字母
a[(9-(white[j+1]-'0'))*2-1][(white[j]-'a')*4+2]='P';
else//沒有了就over了。
break;
}
i=7;//同上哈,不羅嗦。
for(i=7;i<lenb;i+=4)
{
if(black[i]>=65&&black[i]<=90)
a[(17-(black[i+2]-'0')*2)][(black[i+1]-'a')*4+2]=black[i]+32;
else
break;
}
for(j=i;j<lenb;j+=3)
{
if(black[j]>=97&&black[j]<=122)
a[(17-(black[j+1]-'0')*2)][(black[j]-'a')*4+2]='p';
else
break;
}
for(i=0;i<17;i++)
{
for(j=0;j<33;j++)
{
cout<<a[i][j];
}
cout<<endl;
} www.2cto.com
return 0;
}
作者:CSUST_ACM