与这道题刚好相反
他要做的是把原来输出的,变成现在输入的,原来输入的,变成现在输出的。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
//#include <unordered_map>
//#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define eps 1e-8
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define MP(x, y) make_pair(x, y)
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
map<char, int> mp;
char s[17][36]=
{
{"+---+---+---+---+---+---+---+---+\n\0"}, //0
{"|...|:::|...|:::|...|:::|...|:::|\n\0"}, //1
{"+---+---+---+---+---+---+---+---+\n\0"}, //2
{"|:::|...|:::|...|:::|...|:::|...|\n\0"}, //3
{"+---+---+---+---+---+---+---+---+\n\0"}, //4
{"|...|:::|...|:::|...|:::|...|:::|\n\0"}, //5
{"+---+---+---+---+---+---+---+---+\n\0"}, //6
{"|:::|...|:::|...|:::|...|:::|...|\n\0"}, //7
{"+---+---+---+---+---+---+---+---+\n\0"}, //8
{"|...|:::|...|:::|...|:::|...|:::|\n\0"}, //9
{"+---+---+---+---+---+---+---+---+\n\0"}, //10
{"|:::|...|:::|...|:::|...|:::|...|\n\0"}, //11
{"+---+---+---+---+---+---+---+---+\n\0"}, //12
{"|...|:::|...|:::|...|:::|...|:::|\n\0"}, //13
{"+---+---+---+---+---+---+---+---+\n\0"}, //14
{"|:::|...|:::|...|:::|...|:::|...|\n\0"}, //15
{"+---+---+---+---+---+---+---+---+\n\0"}, //16
};
char w[205], b[205];
void init()
{
mp['K'] = mp['k'] = 1;
mp['Q'] = mp['q'] = 2;
mp['R'] = mp['r'] = 3;
mp['B'] = mp['b'] = 4;
mp['N'] = mp['n'] = 5;
mp['P'] = mp['p'] = 6;
}
inline int fid_x(int x) { return (x - 1) * 4 + 2; }
inline int fid_y(int y) { return (8 - y) * 2 + 1; }
int main()
{
init();
int len, x, y;
scanf("White: ");
scanf("%s\n", w);
len = (int)strlen(w);
for(int i=0, j; i<len; )
{
j = i;
while(w[j] ^ ',') j++;
if(j - i == 3)
{
x = w[i + 1] - 'a' + 1;
y = w[i + 2] - '0';
s[fid_y(y)][fid_x(x)] = w[i];
}
else
{
x = w[i] - 'a' + 1;
y = w[i + 1] - '0';
s[fid_y(y)][fid_x(x)] = 'P';
}
i = j + 1;
}
scanf("Black: ");
scanf("%s\n", b);
len = (int)strlen(b);
for(int i=0, j; i<len; )
{
j = i;
while(b[j] ^ ',') j++;
if(j - i == 3)
{
x = b[i + 1] - 'a' + 1;
y = b[i + 2] - '0';
s[fid_y(y)][fid_x(x)] = b[i] + 32;
}
else
{
x = b[i] - 'a' + 1;
y = b[i + 1] - '0';
s[fid_y(y)][fid_x(x)] = 'p';
}
i = j + 1;
}
for(int i=0; i<17; i++) printf("%s", s[i]);
return 0;
}