POJ

http://poj.org/problem?id=2993

POJ - 2996的输入输出相反题,直接暴力模拟出棋盘,然后暴力统计。

不知道会不会出现空的语句,反正直接判了。

跟焦作的模拟比起来都是小儿科。

#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;

char g[200][200];

void show() {
    for(int i = 1; i <= 17; ++i) {
        for(int j = 1; j <= 33; ++j) {
            printf("%c", g[i][j]);
        }
        printf("
");
    }
}

int main() {
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
#endif // Yinku
    memset(g, ' ', sizeof(g));
    for(int i = 1; i <= 9; ++i) {
        for(int j = 1; j <= 9; ++j) {
            g[(i - 1) * 2 + 1][(j - 1) * 4 + 1] = '+';
        }
    }
    for(int i = 1; i <= 8; ++i) {
        for(int j = 1; j <= 9; ++j) {
            g[(i - 1) * 2 + 2][(j - 1) * 4 + 1] = '|';
        }
    }
    for(int i = 1; i <= 9; ++i) {
        for(int j = 1; j <= 8; ++j) {
            g[(i - 1) * 2 + 1][(j - 1) * 4 + 2] = '-';
            g[(i - 1) * 2 + 1][(j - 1) * 4 + 3] = '-';
            g[(i - 1) * 2 + 1][(j - 1) * 4 + 4] = '-';
        }
    }
    for(int i = 1; i <= 8; ++i) {
        for(int j = 1; j <= 8; ++j) {
            if(!((i + j) & 1)) {
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 2] = '.';
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = '.';
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 4] = '.';
            } else {
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 2] = ':';
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = ':';
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 4] = ':';
            }
        }
    }

    //show();

    string s;
    cin >> s;
    cin >> s;
    if(s == "Black:") {
        ;
    } else {
        s += ',';
        string tmp = "";
        int n = s.length();
        for(int i = 0; i < n; ++i) {
            if(s[i] == ',') {
                if(tmp.length() == 2) {
                    int j = (tmp[0] - 'a' + 1);
                    int i = 9 - (tmp[1] - '0');
                    g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = 'P';
                } else {
                    int j = (tmp[1] - 'a' + 1);
                    int i = 9 - (tmp[2] - '0');
                    g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = tmp[0];
                }
                tmp = "";
            } else {
                tmp += s[i];
            }
        }
        cin >> s;
        cin >> s;
    }

    s += ',';
    string tmp = "";
    int n = s.length();
    for(int i = 0; i < n; ++i) {
        if(s[i] == ',') {
            if(tmp.length() == 2) {
                int j = (tmp[0] - 'a' + 1);
                int i = 9 - (tmp[1] - '0');
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = 'p';
            } else {
                int j = (tmp[1] - 'a' + 1);
                int i = 9 - (tmp[2] - '0');
                g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = char(tmp[0] + 32);
            }
            tmp = "";
        } else {
            tmp += s[i];
        }
    }

    show();
}
原文地址:https://www.cnblogs.com/Inko/p/11721502.html