题目链接
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2842 | Accepted: 1887 |
Description
Input
Output
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.| +---+---+---+---+---+---+---+---+
题解:想清楚细节的处理,直接模拟就行了。
代码如下:
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #include<string> #include<stack> #include<math.h> #include<vector> #include<set> #include<map> #define nn 110000 #define inff 0x7fffffff #define eps 1e-8 #define mod 1000000007 typedef long long LL; const LL inf64=LL(inff)*inff; using namespace std; char s1[nn],s2[nn]; map<pair<int,int>,char>ma; int main() { gets(s1); getchar(); gets(s2); int i,j; ma.clear(); int ls=strlen(s1); char ix; int x,y; for(i=7;i<ls;i++) { if(s1[i]>='a'&&s1[i]<='z') { if(s1[i-1]==',') ix='P'; else ix=s1[i-1]; y=s1[i]-'a'+1; x=s1[i+1]-'0'; x=9-x; ma[make_pair(x,y)]=ix; i++; } } ls=strlen(s2); for(i=7;i<ls;i++) { if(s2[i]>='a'&&s2[i]<='z') { if(s2[i-1]==',') { ix='p'; } else ix=s2[i-1]-'A'+'a'; y=s2[i]-'a'+1; x=s2[i+1]-'0'; x=9-x; ma[make_pair(x,y)]=ix; i++; } } for(i=0;i<=16;i++) { x=i/2+1; for(j=1;j<=8;j++) { if(i%2==0) { printf("+---"); } else { if((x+j)%2) { if(ma.count(make_pair(x,j))) ix=ma[make_pair(x,j)]; else ix=':'; printf("|:%c:",ix); } else { if(ma.count(make_pair(x,j))) ix=ma[make_pair(x,j)]; else ix='.'; printf("|.%c.",ix); } } } if(i%2==0) puts("+"); else puts("|"); } return 0; }