POJ2996 Help Me with the Game(未完待续,模拟)
来源:互联网 发布:数据分析在职研究生 编辑:程序博客网 时间:2024/05/17 06:00
POJ2996
题意:给你一个棋盘,白棋用大写字母表示,黑棋用小写字母表示。让你按照K,Q,R,B,N,P的方式输出棋子,K,Q,R,B,N输出的格式为字母+位置,P输出的格式仅为位置。白棋的位置输出方式是列由大到小,行由小到大。黑棋的位置输出方式是列和行都是由小到大。
本题的坑点:
行数是从下往上数的。
转载自:http://blog.csdn.net/lyy289065406/article/details/6645441
#include<iostream>using namespace std;class white_piece{public: int row; char col; bool flag; //在class中bool型的默认值为false}K,Q,R[3],B[3],N[3];bool pawn[9]['i']={false}; //记录白色pawn的位置int PR=0,PB=0,PN=0; //同类型棋子的指针class black_piece{public: int row; char col; bool flag;}k,q,r[2],b[2],n[2],p[8];int pr=0,pb=0,pn=0,pp=0; char chess[9]['i']; // ASCII: 'i'>'I',use the Row 1 to 8,and Col 'a' to 'h'int x,z;char y;int w_count=0; //白棋总数int b_count=0; //黑棋总数void judge(void){ if(chess[x][y]=='.' || chess[x][y]==':') return; else if(chess[x][y]=='k') //黑棋判断 { k.row=9-x; k.col=y; k.flag=true; b_count++; return; } else if(chess[x][y]=='q') { q.row=9-x; q.col=y; q.flag=true; b_count++; return; } else if(chess[x][y]=='r') { r[pr].row=9-x; r[pr++].col=y; b_count++; return; } else if(chess[x][y]=='b') { b[pb].row=9-x; b[pb++].col=y; b_count++; return; } else if(chess[x][y]=='n') { n[pn].row=9-x; n[pn++].col=y; b_count++; return; } else if(chess[x][y]=='p') { p[pp].row=9-x; p[pp++].col=y; b_count++; return; } else if(chess[x][y]=='K') //白棋判断 { K.row=9-x; K.col=y; K.flag=true; w_count++; return; } else if(chess[x][y]=='Q') { Q.row=9-x; Q.col=y; Q.flag=true; w_count++; return; } else if(chess[x][y]=='R') { R[PR].row=9-x; R[PR++].col=y; w_count++; return; } else if(chess[x][y]=='B') { B[PB].row=9-x; B[PB++].col=y; w_count++; return; } else if(chess[x][y]=='N') { N[PN].row=9-x; N[PN++].col=y; w_count++; return; } else if(chess[x][y]=='P') { pawn[9-x][y]=true; w_count++; return; }}void Print(void){ cout<<"White: "; if(K.flag) { cout<<'K'<<K.col<<K.row; if(--w_count>0) cout<<','; } if(Q.flag) { cout<<'Q'<<Q.col<<Q.row; if(--w_count>0) cout<<','; } if(PR==2) if(R[1].row<R[0].row) { R[2]=R[0]; R[0]=R[1]; R[1]=R[2]; } for(x=0;x<PR;x++) { cout<<'R'<<R[x].col<<R[x].row; if(--w_count>0) cout<<','; } if(PB==2) if(B[1].row<B[0].row) { B[2]=B[0]; B[0]=B[1]; B[1]=B[2]; } for(x=0;x<PB;x++) { cout<<"B"<<B[x].col<<B[x].row; if(--w_count>0) cout<<','; } if(PN==2) if(N[1].row<N[0].row) { N[2]=N[0]; N[0]=N[1]; N[1]=N[2]; } for(x=0;x<PN;x++) { cout<<'N'<<N[x].col<<N[x].row; if(--w_count>0) cout<<','; } for(x=1;x<=8;x++) for(y='a';y<='h';y++) if(pawn[x][y]) { cout<<y<<x; if(--w_count>0) cout<<','; } cout<<endl; cout<<"Black: "; if(k.flag) { cout<<'K'<<k.col<<k.row; if(--b_count>0) cout<<','; } if(q.flag) { cout<<'Q'<<q.col<<q.row; if(--b_count>0) cout<<','; } for(x=0;x<pr;x++) { cout<<'R'<<r[x].col<<r[x].row; if(--b_count>0) cout<<','; } for(x=0;x<pb;x++) { cout<<"B"<<b[x].col<<b[x].row; if(--b_count>0) cout<<','; } for(x=0;x<pn;x++) { cout<<'N'<<n[x].col<<n[x].row; if(--b_count>0) cout<<','; } for(x=0;x<pp;x++) { cout<<p[x].col<<p[x].row; if(--b_count>0) cout<<','; } cout<<endl; return;}int main(void){ char temp; /*Input*/ for(z=0;z<33;z++) cin>>temp; for(x=1;x<=8;x++) { cin>>temp; for(y='a';y<='h';y++) { cin>>temp>>chess[x][y]>>temp>>temp; judge(); } for(z=0;z<33;z++) cin>>temp; } /*Print*/ Print(); return 0;}
阅读全文
0 0
- POJ2996 Help Me with the Game(未完待续,模拟)
- Help Me with the Game(poj2996模拟)
- POJ2996--Help Me with the Game(模拟题)
- POJ2996《Help Me with the Game》方法:模拟
- POJ2996 Help Me with the Game 模拟题
- poj2996 Help Me with the Game
- poj2996--Help Me with the Game
- POJ2996 - Help Me with the Game
- poj2996--Help Me with the Game
- POJ2996,Help Me with the Game,棋盘模拟,同水且繁
- Help Me with the Game(模拟法)
- 模拟 Help Me with the Game 2996
- poj 2996 Help Me with the Game(模拟)
- poj_2996 Help Me with the Game(模拟)
- POJ 2996Help Me with the Game(模拟)
- POJ 2996 Help Me with the Game(模拟)
- POJ 2996 Help Me with the Game(模拟)
- poj2996 Help Me with the Game 结构体多级排序 桶排序
- MFC一一框架类当中的一些操作(改变标题,设置菜单栏,工具栏)
- linux+apache+mysql+php环境搭建配置多个网站(全程实操)
- HDOJ 1394 Minimum Inversion Number(线段树+逆序数)
- Java的21个核心技术点,你知道吗?
- 详解Java中ArrayList、Vector、LinkedList三者的异同点
- POJ2996 Help Me with the Game(未完待续,模拟)
- vector & list
- 重排序列(水题)
- 层次聚类--R
- 最大似然估计
- POJ
- 2667: [cqoi2012]模拟工厂
- 多线程第三章(1)
- 【vue】webpack打包vue项目并且运行在Tomcat里面