POJ 2996 Help Me with the Game(模拟)

来源:互联网 发布:航海家软件免费版 编辑:程序博客网 时间:2024/06/12 14:33




http://poj.org/problem?id=2996





题目大意:

题目读了一年    国际象棋棋盘黑白相间     

白色用 '.' 填充    黑色用 ':' 填充    

白色棋子用大写字母表示   黑色棋子用小写字母表示

给你棋盘    求出棋子的坐标 (左下角为  a1 )    

棋子按 KQRBNP  顺序输出

按列从小到大输出

同一白色棋子按行从小到大输出

同一黑色棋子按行从大到小输出


分析:

按输出顺序直接遍历图就好






AC代码:

#include <stdio.h>#include <string.h>char map[100][100];char str1[10]="KQRBNP";char str2[10]="kqrbnp";int main (){for (int i=0;i<17;i++){for (int j=0;j<8;j++){scanf("%*c%*c%c%*c",&map[i][j]) ;} getchar();getchar();}int count=0;int n=strlen(str1);printf ("White: ");for (int k=0;k<n;k++){for (int i=16;i>=0;i--){for (int j=0;j<8;j++){if(map[i][j]==str1[k]){if (count)printf (",");if(k!=n-1)printf ("%c",str1[k]);printf ("%c%d",j+'a',8-i/2);count++;}}}}putchar('\n');count=0;printf ("Black: ");for (int k=0;k<n;k++){for (int i=0;i<16;i++){for (int j=0;j<8;j++){if(map[i][j]==str2[k]){if (count)printf (",");if(k!=n-1)printf ("%c",str1[k]);printf ("%c%d",j+'a',(16-i+1)/2);count++;}}}}}