poj-2993-Emag eht htiw Em Pleh && poj-2996-Help Me with the Game

poj-2993 poj-2996

先说2996的题意:
给一张棋盘,按KQRBKNP的顺序输出棋子的位置
其中大写字母代表白棋,小写字母代表黑棋
有一点需要注意,左下角是(1, 1)点

细心一些,耐心一些就可以AC了

#include <iostream> 
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <string> 
#include <map>
#include <algorithm>
#define N 13
#define ll long long
using namespace std;
char Map[10][10];
string s;
int main(){
#ifndef ONLINE_JUDGE 
    freopen("1.txt", "r", stdin);
#endif
    int i, j, l;
    bool flag = true;
    getline(cin, s);
    for (i = 0; i < 8; i++){
        getline(cin, s);
        l = s.size();
        for (j = 0; j < 8; j++){
            Map[i][j] = s[2+j*4];
        }
        getline(cin, s);
    }
    printf("White: ");
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'K'){
                if (flag){
                    flag = false;
                }else{
                    printf(",");
                }
                printf("K%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'Q'){
                printf(",Q%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'R'){
                printf(",R%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'B'){
                printf(",B%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'N'){
                printf(",N%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 7; i >= 0; i--){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'P'){
                printf(",%c%d", j+'a', 8-i);
            }
        }
    }
    puts("");
    printf("Black: ");
    flag = true;
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'k'){
                if (flag){
                    flag = false;
                }else{
                    printf(",");
                }
                printf("K%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'q'){
                printf(",Q%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'r'){
                printf(",R%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'b'){
                printf(",B%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'n'){
                printf(",N%c%d", j+'a', 8-i);
            }
        }
    }
    for (i = 0; i < 8; i++){
        for (j = 0; j < 8; j++){
            if (Map[i][j] == 'p'){
                printf(",%c%d", j+'a', 8-i);
            }
        }
    }
    puts("");
    return 0;
}

2993和2996是相反的,给出每个棋子的位置,输出棋盘

#include <iostream> 
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <string> 
#include <map>
#include <algorithm>
#define N 13
#define ll long long
using namespace std;
char Map[10][10];
string s;
int main(){
#ifndef ONLINE_JUDGE 
    freopen("1.txt", "r", stdin);
#endif
    int i, j, k, l, x, y;
    char c;
    getline(cin, s);
    l = s.size();
    for (i = 0; 7+i*4 < l; i++){
        c = s[7+i*4];
        if (c < 'A' || c > 'Z') break; 
        x = s[9+i*4]-'0';
        y = s[8+i*4]-'a';
        Map[x][y] = c;
    }
    for(i = 7+i*4; i < l; i+=3){
        x = s[i+1]-'0';
        y = s[i]-'a';
        Map[x][y] = 'P';
    }
    getline(cin, s);
    l = s.size();
    for (i = 0; 7+i*4 < l; i++){
        c = s[7+i*4]+32;
        if (c < 'a' || c > 'z') break; 
        x = s[9+i*4]-'0';
        y = s[8+i*4]-'a';
        Map[x][y] = c;
    }
    for(i = 7+i*4; i < l; i+=3){
        x = s[i+1]-'0';
        y = s[i]-'a';
        Map[x][y] = 'p';
    }
    puts("+---+---+---+---+---+---+---+---+");
    for (i = 8; i > 0; i--){
        printf("|");
        for (j = 0; j < 8; j++){
            if ((i+j)&1){
                printf(":");
            }else{
                printf(".");
            }
            if ((Map[i][j] >= 'a' && Map[i][j] <= 'z') || (Map[i][j] >= 'A' && Map[i][j] <= 'Z')){
                printf("%c", Map[i][j]);
            }else{
                if ((i+j)&1){
                    printf(":");
                }else{
                    printf(".");
                }
            }
            if ((i+j)&1){
                printf(":|");
            }else{
                printf(".|");
            }
        }
        cout << endl;
        puts("+---+---+---+---+---+---+---+---+");
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值