标签:des style c class blog code
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 3175 | Accepted: 2053 |
Description
Input
Output
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
【题目来源】
http://poj.org/problem?id=2996
【题目大意】
读入一张棋盘。白棋用大写字母表示,黑棋用小写字母表示。
其中各个字母的含义:K(国王)、Q(女王)、R(车),B(主教)、N(骑士)、P(兵)。
小写字母a到h表示列,数字1到8表示行。
输出对应的棋子的名称和坐标。注意:兵(P)不用输出名称。
【题目分析】
题目本来很简单,但是如果方法选的不恰当,再简单的题目也会变得很难,所以说做题还是要将大部分的时间花在思考上,而不是写代码上。
这题就是一个简单的模拟+暴搜,没有任何技巧。
思路清晰,就很容易1A。
我看网上有的人写了260多行,狂晕。
#include<cstdio> char Map[35][35]; void find1(char c) { for(int i=1;i<=17;i++) for(int j=1;j<=33;j++) { if(Map[i][j]==c) { if(c>=‘A‘&&c<=‘Z‘) printf("%c",c); else printf("%c",c-32); printf("%c%d,",‘a‘+j/4,i/2); } } } void find2(char c) { for(int i=17;i>=1;i--) for(int j=1;j<=33;j++) { if(Map[i][j]==c) { if(c>=‘A‘&&c<=‘Z‘) printf("%c",c); else printf("%c",c-32); printf("%c%d,",‘a‘+j/4,i/2); } } } void find_write() { find1(‘K‘); find1(‘Q‘); find1(‘R‘); find1(‘B‘); find1(‘N‘); int flag=0; for(int i=1;i<=17;i++) for(int j=1;j<=33;j++) { if(Map[i][j]==‘P‘) { if(flag) printf(",%c%d",‘a‘+j/4,i/2); else printf("%c%d",‘a‘+j/4,i/2); flag++; } } puts(""); } void find_black() { find2(‘k‘); find2(‘q‘); find2(‘r‘); find2(‘b‘); find2(‘n‘); int flag=0; for(int i=17;i>=1;i--) for(int j=1;j<=33;j++) { if(Map[i][j]==‘p‘) { if(flag) printf(",%c%d",‘a‘+j/4,i/2); else printf("%c%d",‘a‘+j/4,i/2); flag++; } } puts(""); } int main() { while(scanf("%s",Map[17]+1)!=EOF) { for(int i=16;i>=1;i--) scanf("%s",Map[i]+1); printf("White: " ); find_write(); printf("Black: " ); find_black(); } return 0; }
模拟 + 暴搜 --- Help Me with the Game,布布扣,bubuko.com
模拟 + 暴搜 --- Help Me with the Game
标签:des style c class blog code
原文地址:http://www.cnblogs.com/acmer-jsb/p/3747035.html