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<iostream> #include<cstdio> #include<cstring> using namespace std; char q[10],w[100]; char e[10],r[100]; char white[12]= {'K','Q','R','B','N','P'}; char black[12]= {'k','q','r','b','n','p'}; char map1[18][35]; int s1,s2; int main() { int i,j; for(i=1; i<=17; i++) //初始化地图 for(j=1; j<=33; j++) { if(i%2==1&&j%4==1) map1[i][j]='+'; else if(i%2==1) map1[i][j]='-'; else if(i%2==0&&j%4==1) map1[i][j]='|'; else if(i%4==2&&(double)(j%8)/4<=1&&j%8!=0) map1[i][j]='.'; else if(i%4==0&&((double)(j%8)/4>1||j%8==0)) map1[i][j]='.'; else map1[i][j]=':'; } for(int k=1; k<=2; k++) //两行输入 { scanf("%s%s",q,w); s1=strlen(w); if(q[0]=='W') { for(i=0; i<=5; i++) for(j=0; j<=s1; j++) { if(w[j]==white[i]) map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]=white[i]; if(w[j]==','&&w[j+1]>96) map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]='P'; } } if(q[0]=='B') { for(i=0; i<=5; i++) for(j=0; j<=s1; j++) { if(w[j]==white[i]) map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]=black[i]; if(w[j]==','&&w[j+1]>96) map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]='p'; } } } for(i=1; i<=17; i++) { for(j=1; j<=33; j++) cout<<map1[i][j]; cout<<endl; } return 0; }
Sample Input
+---+---+---+---+---+---+---+---+
|.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.|
+---+---+---+---+---+---+---+---+
Sample Output
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
代码:#include<iostream> #include<cstdio> using namespace std; char black[6]= {'K','Q','R','B','N','P'}; char white[6]= {'k','q','r','b','n','p'}; int main() { int s1,s2; int i,j,k; char map1[18][34]; s1=s2=0; for(i=1; i<=17; i++) for(j=1; j<=33; j++) { cin>>map1[i][j]; if(map1[i][j]=='p') //这个是为了不输出最后的那个逗号。。。 s1++; if(map1[i][j]=='P') s2++; } cout<<"White: "; for(k=0; k<6; k++) for(i=17; i>=1; i--) for(j=1; j<=33; j++) { if(i%2==0&&j%4==3&&k<=4) if(map1[i][j]==black[k]) { printf("%c%c%d,",black[k],'a'+(j+1)/4-1,9-i/2); } if(k==5&&i%2==0&&j%4==3) if(map1[i][j]=='P') { s1--; if(s1==0) { printf("%c%d\n",'a'+(j+1)/4-1,9-i/2); continue; } printf("%c%d,",'a'+(j+1)/4-1,9-i/2); } } cout<<"Black: "; for(k=0; k<6; k++) for(i=1; i<=17; i++) for(j=1; j<=33; j++) { if(i%2==0&&j%4==3&&k<=4) if(map1[i][j]==white[k]) { printf("%c%c%d,",black[k],'a'+(j+1)/4-1,9-i/2); } if(k==5&&i%2==0&&j%4==3) if(map1[i][j]=='p') { s2--; if(s2==0) { printf("%c%d\n",'a'+(j+1)/4-1,9-i/2); continue; } printf("%c%d,",'a'+(j+1)/4-1,9-i/2); } } return 0; }
POJ 2996 & 2993 国际象棋布局 模拟,布布扣,bubuko.com
原文:http://blog.csdn.net/axuan_k/article/details/37922039