1.Link:
http://poj.org/problem?id=2993
2.Content:
Emag eht htiw Em Pleh
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2801 Accepted: 1861 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,h6Sample 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.| +---+---+---+---+---+---+---+---+Source
3.Method:
模拟题,我的方法是想把棋盘初始化好,然后再往里面添棋子
由于很简单,就没有把white和black统一为一种情况,代码不怎么精简
不过对于水题,已经足够了
4.Code:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int main() 7 { 8 //freopen("D://input.txt","r",stdin); 9 10 int i,j; 11 12 //init output 13 string str_out[8 + 9]; 14 str_out[0] = "+---+---+---+---+---+---+---+---+"; 15 for(i = 0; i < 8; ++i) 16 { 17 str_out[i * 2 + 1] = "|"; 18 for(j = 0; j < 8; ++j) 19 { 20 if((i + j) % 2 == 0) str_out[i * 2 + 1] += "..."; 21 else str_out[i * 2 + 1] += ":::"; 22 str_out[i * 2 + 1] += "|"; 23 } 24 str_out[(i + 1) * 2] = "+---+---+---+---+---+---+---+---+"; 25 } 26 27 28 string str; 29 30 //white: 31 cin >> str; 32 cin >> str; 33 34 str = "," + str; 35 36 //cout << str << endl; 37 int arr_ch[] = {'K','Q','R','B','N'}; 38 39 string::size_type str_i; 40 for(str_i = 0; str_i != str.size(); ++str_i) 41 { 42 if(str[str_i] == ',') 43 { 44 for(i = 0; i < 5; ++i) if(str[str_i + 1] == arr_ch[i]) break; 45 if(i < 5) 46 { 47 str_out[(8 - (str[str_i + 3] - '0')) * 2 + 1][2 + 4 * (str[str_i + 2] - 'a')] = arr_ch[i]; 48 } 49 else 50 { 51 str_out[(8 - (str[str_i + 2] - '0')) * 2 + 1][2 + 4 * (str[str_i + 1] - 'a')] = 'P'; 52 } 53 } 54 } 55 56 //black: 57 cin >> str; 58 cin >> str; 59 str = "," + str; 60 61 //cout << str << endl; 62 63 for(str_i = 0; str_i != str.size(); ++str_i) 64 { 65 if(str[str_i] == ',') 66 { 67 for(i = 0; i < 5; ++i) if(str[str_i + 1] == arr_ch[i]) break; 68 if(i < 5) 69 { 70 str_out[(8 - (str[str_i + 3] - '0')) * 2 + 1][2 + 4 * (str[str_i + 2] - 'a')] = arr_ch[i] + ('a' - 'A'); 71 } 72 else 73 { 74 str_out[(8 - (str[str_i + 2] - '0')) * 2 + 1][2 + 4 * (str[str_i + 1] - 'a')] = 'p'; 75 } 76 } 77 } 78 79 80 for(i = 0; i < 17; ++i) cout << str_out[i] << endl; 81 82 //fclose(stdin); 83 84 return 0; 85 }
5.Reference: