您的位置:首页 > 其它

poj 2996 Help Me with the Game 模拟

2017-03-27 17:09 501 查看
模拟 要细心啊

code:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
#define maxn 105
char str[maxn];
char m[9][9];
int has[128];
struct N{
int t;
int x,y;
char xx;
};
vector<N>q[20];
int f;
bool cmp1(N a,N b){
if(a.t!=b.t)return a.t<b.t;
if(a.x!=b.x)return a.x<b.x;
if(a.xx!=b.xx)return a.xx<b.xx;
}
bool cmp2(N a,N b){
if(a.t!=b.t)return a.t<b.t;
if(a.x!=b.x)return a.x>b.x;
if(a.xx!=b.xx)return a.xx<b.xx;
}
void out(int t,N a){
if(f)putchar(',');
else putchar(' ');
f=1;
switch(t){
case 1:putchar('K');break;
case 2:putchar('Q');break;
case 3:putchar('R');break;
case 4:putchar('B');break;
case 5:putchar('N');break;
case 6:break;
}
putchar(a.xx);
cout<<a.x;
}
int main(){
has['K']=1;has['Q']=2;has['R']=3;has['B']=4;has['N']=5;has['P']=6;
has['k']=7;has['q']=8;has['r']=9;has['b']=10;has['n']=11;has['p']=12;
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|\n",&m[8][1],&m[8][2],&m[8][3],&m[8][4],&m[8][5],&m[8][6],&m[8][7],&m[8][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|\n",&m[7][1],&m[7][2],&m[7][3],&m[7][4],&m[7][5],&m[7][6],&m[7][7],&m[7][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|\n",&m[6][1],&m[6][2],&m[6][3],&m[6][4],&m[6][5],&m[6][6],&m[6][7],&m[6][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|\n",&m[5][1],&m[5][2],&m[5][3],&m[5][4],&m[5][5],&m[5][6],&m[5][7],&m[5][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|\n",&m[4][1],&m[4][2],&m[4][3],&m[4][4],&m[4][5],&m[4][6],&m[4][7],&m[4][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|\n",&m[3][1],&m[3][2],&m[3][3],&m[3][4],&m[3][5],&m[3][6],&m[3][7],&m[3][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|\n",&m[2][1],&m[2][2],&m[2][3],&m[2][4],&m[2][5],&m[2][6],&m[2][7],&m[2][8]);
scanf("+---+---+---+---+---+---+---+---+\n");
scanf("|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|\n",&m[1][1],&m[1][2],&m[1][3],&m[1][4],&m[1][5],&m[1][6],&m[1][7],&m[1][8]);
scanf("+---+---+---+---+---+---+---+---+");
for(int i=1;i<=8;++i)
for(int j=1;j<=8;++j)
if(m[i][j]!=':'&&m[i][j]!='.'){
N tmp;
tmp.x=i;
tmp.y=j;
tmp.xx=(char)(96+j);
tmp.t=has[m[i][j]];
q[has[m[i][j]]].push_back(tmp);
}
printf("White:");
f=0;
for(int i=1;i<=6;++i){
N ans[100];
int tot=0;
vector<N>::iterator iter;
for(iter=q[i].begin();iter!=q[i].end();iter++)ans[tot++]=*iter;
sort(ans,ans+tot,cmp1);
for(int j=0;j<tot;++j)out(i,ans[j]);
}
putchar('\12');
printf("Black:");
f=0;
for(int i=1;i<=6;++i){
N ans[100];
int tot=0;
vector<N>::iterator iter;
for(iter=q[i+6].begin();iter!=q[i+6].end();iter++)ans[tot++]=*iter;
sort(ans,ans+tot,cmp2);
for(int j=0;j<tot;++j)out(i,ans[j]);
}
putchar('\12');
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: