本文共 2978 字,大约阅读时间需要 9 分钟。
题目地址:http://poj.org/problem?id=2993
1 /* 2 题意:与POJ2996完全相反 3 模拟题 + 字符串处理:无算法,读入两行字符串找出相应点用used标记,输出时标记过的输出字母,否则输出'.'或':'。 4 注意:棋盘的行的顺序是从下到上递增的 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 using namespace std; 16 17 const int MAXN = 1e3 + 10; 18 const int INF = 0x3f3f3f3f; 19 int used[MAXN][MAXN]; 20 char a[MAXN][MAXN]; 21 map m; 22 string s1,s2; 23 24 void print(int tw, int tb) 25 { 26 bool flag = false; 27 for (int i=1; i<=8; ++i) 28 { 29 cout << "+---+---+---+---+---+---+---+---+" << endl; 30 cout << "|"; 31 flag = !flag; 32 for (int j=1; j<=8; ++j) 33 { 34 (flag) ? cout << "." : cout << ":"; 35 if (!used[i][j]) (flag) ? cout << "." : cout << ":"; 36 else 37 { 38 cout << a[i][j]; 39 } 40 (flag) ? cout << "." : cout << ":"; 41 flag = !flag; 42 cout << "|"; 43 } 44 cout << endl; 45 } 46 47 cout << "+---+---+---+---+---+---+---+---+" << endl; 48 } 49 50 void work(void) 51 { 52 int tw = 0, tb = 0; 53 for (int i=7; s1[i]!='\0'; ++i) //White 54 { 55 if (s1[i] == ',') continue; 56 if (s1[i]<='S' && s1[i] >= 'B') 57 { 58 a[9-(s1[i+2]-'0')][m[s1[i+1]]] = s1[i]; 59 used[9-(s1[i+2]-'0')][m[s1[i+1]]] = 1; 60 i += 3; 61 } 62 if (s1[i]<='s' && s1[i]>='a') 63 { 64 a[9-(s1[i+1]-'0')][m[s1[i]]] = 'P'; 65 used[9-(s1[i+1]-'0')][m[s1[i]]] = 1; 66 i += 2; 67 } 68 if (i >= s1.size ()) break; 69 } 70 for (int i=7; s2[i]!='\0'; ++i) //Black 71 { 72 if (s2[i] == ',') continue; 73 if (s2[i]<='S' && s2[i] >= 'B') 74 { 75 a[9-(s2[i+2]-'0')][m[s2[i+1]]] = s2[i] - 'A' + 'a'; 76 used[9-(s2[i+2]-'0')][m[s2[i+1]]] = 1; 77 i += 3; 78 } 79 if (s2[i]<='s' && s2[i]>='a') 80 { 81 a[9-(s2[i+1]-'0')][m[s2[i]]] = 'p'; 82 used[9-(s2[i+1]-'0')][m[s2[i]]] = 1; 83 i += 2; 84 } 85 if (i >= s2.size ()) break; 86 } 87 88 print (tw, tb); 89 } 90 91 int main(void) //POJ 2993 Emag eht htiw Em Pleh 92 { 93 //freopen ("J.in", "r", stdin); 94 95 char ch = 'a'; 96 for (int i=1; i<=8; ++i) 97 { 98 m[ch++] = i; 99 }100 101 getline (cin, s1);102 getline (cin, s2);103 memset (used, 0, sizeof (used));104 work ();105 106 return 0;107 }108 109 /*110 +---+---+---+---+---+---+---+---+111 */112 113 /*114 +---+---+---+---+---+---+---+---+115 |.r.|:::|.b.|:q:|.k.|:::|.n.|:r:|116 +---+---+---+---+---+---+---+---+117 |:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|118 +---+---+---+---+---+---+---+---+119 |...|:::|.n.|:::|...|:::|...|:p:|120 +---+---+---+---+---+---+---+---+121 |:::|...|:::|...|:::|...|:::|...|122 +---+---+---+---+---+---+---+---+123 |...|:::|...|:::|.P.|:::|...|:::|124 +---+---+---+---+---+---+---+---+125 |:P:|...|:::|...|:::|...|:::|...|126 +---+---+---+---+---+---+---+---+127 |.P.|:::|.P.|:P:|...|:P:|.P.|:P:|128 +---+---+---+---+---+---+---+---+129 |:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|130 +---+---+---+---+---+---+---+---+131 */
转载于:https://www.cnblogs.com/Running-Time/p/4372548.html