poj2996 模拟

#include <iostream>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
struct data {
       int r,l;
       char ch;
}chessw[65],chessb[65];
string s;
char ch,ch1;
int totw,totb;
map<char,int> ma;
void print1(data chess) {
     char ch = chess.ch;
     int r = chess.r;
     int l = chess.l;
     if (ch!='P') printf("%c",ch);
     printf("%c%d",l+96,9-r);
}
void print2(data chess) {
     char ch = chess.ch;
     int r = chess.r;
     int l = chess.l;
     if (ch!='p') printf("%c",ch-32);
     printf("%c%d",l+96,9-r);
}
bool cmp1(data a,data b) {
     int p1 = ma[a.ch];
     int p2 = ma[b.ch];
     if (p1<p2) return true;
     else if (p1==p2 && a.r>b.r) return true;
     else if (p1==p2 && a.r==b.r && a.l<b.l) return true;
     return false;
}
bool cmp2(data a,data b) {
     int p1 = ma[a.ch];
     int p2 = ma[b.ch];
     if (p1<p2) return true;
     else if (p1==p2 && a.r<b.r) return true;
     else if (p1==p2 && a.r==b.r && a.l<b.l) return true;
     return false;
}
int main() {
    ma['K'] = ma['k'] = 1;
    ma['Q'] = ma['q'] = 2;
    ma['R'] = ma['r'] = 3;
    ma['B'] = ma['b'] = 4;
    ma['N'] = ma['n'] = 5;
    ma['P'] = ma['p'] = 6;
    totw = totb = 0;
    cin >> s;
    scanf("%c",&ch);
    for (int i=1;i<=8;i++) {
        for (int k=1;k<=8;k++) {
        for (int j=1;j<=4;j++) {
            scanf("%c",&ch);
            if (j==3) {
                      if (ch>=65 && ch<=90) {
                                 totw++;
                                 chessw[totw].ch = ch;
                                 chessw[totw].r = i;
                                 chessw[totw].l = k;
                      }
                      else if (ch>=97 && ch<=122) {
                           totb++;
                           chessb[totb].ch = ch;
                           chessb[totb].r = i;
                           chessb[totb].l = k;
                      }
            }
        }
        }
        scanf("%c%c",&ch1,&ch);
        cin >> s;
        scanf("%c",&ch);
    }
    sort(chessw+1,chessw+totw+1,cmp1);
    sort(chessb+1,chessb+totb+1,cmp2);
    printf("White: ");
    for (int i=1;i<totw;i++) {
        print1(chessw[i]);
        printf(",");
    }
    print1(chessw[totw]);
    printf("\n");
    printf("Black: ");
    for (int i=1;i<totb;i++) {
        print2(chessb[i]);
        printf(",");
    }
    print2(chessb[totb]);
    printf("\n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值