poj 2993 Emag eht htiw Em Pleh(模拟)

题目链接

Emag eht htiw Em Pleh
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 2842   Accepted: 1887

Description

This problem is a reverse case of the problem 2996. You are given the output of the problem H and your task is to find the corresponding input.

Input

according to output of problem 2996.

Output

according to input of problem 2996.

Sample Input

White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4
Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6

Sample Output

+---+---+---+---+---+---+---+---+
|.r.|:::|.b.|:q:|.k.|:::|.n.|:r:|
+---+---+---+---+---+---+---+---+
|:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|
+---+---+---+---+---+---+---+---+
|...|:::|.n.|:::|...|:::|...|:p:|
+---+---+---+---+---+---+---+---+
|:::|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|...|:::|...|:::|.P.|:::|...|:::|
+---+---+---+---+---+---+---+---+
|:P:|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|.P.|:::|.P.|:P:|...|:P:|.P.|:P:|
+---+---+---+---+---+---+---+---+
|:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|
+---+---+---+---+---+---+---+---+

题解:想清楚细节的处理,直接模拟就行了。

代码如下:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<string>
#include<stack>
#include<math.h>
#include<vector>
#include<set>
#include<map>
#define nn 110000
#define inff 0x7fffffff
#define eps 1e-8
#define mod 1000000007
typedef long long LL;
const LL inf64=LL(inff)*inff;
using namespace std;
char s1[nn],s2[nn];
map<pair<int,int>,char>ma;
int main()
{
    gets(s1);
    getchar();
    gets(s2);
    int i,j;
    ma.clear();
    int ls=strlen(s1);
    char ix;
    int x,y;
    for(i=7;i<ls;i++)
    {
        if(s1[i]>='a'&&s1[i]<='z')
        {
            if(s1[i-1]==',')
                ix='P';
            else
                ix=s1[i-1];
            y=s1[i]-'a'+1;
            x=s1[i+1]-'0';
            x=9-x;
            ma[make_pair(x,y)]=ix;
            i++;
        }
    }
    ls=strlen(s2);
    for(i=7;i<ls;i++)
    {
        if(s2[i]>='a'&&s2[i]<='z')
        {
            if(s2[i-1]==',')
            {
                ix='p';
            }
            else
                ix=s2[i-1]-'A'+'a';
            y=s2[i]-'a'+1;
            x=s2[i+1]-'0';
            x=9-x;
            ma[make_pair(x,y)]=ix;
            i++;
        }
    }
    for(i=0;i<=16;i++)
    {
        x=i/2+1;
        for(j=1;j<=8;j++)
        {
            if(i%2==0)
            {
                printf("+---");
            }
            else
            {
                if((x+j)%2)
                {
                    if(ma.count(make_pair(x,j)))
                        ix=ma[make_pair(x,j)];
                    else
                        ix=':';
                    printf("|:%c:",ix);
                }
                else
                {
                    if(ma.count(make_pair(x,j)))
                        ix=ma[make_pair(x,j)];
                    else
                        ix='.';
                    printf("|.%c.",ix);
                }
            }
        }
        if(i%2==0)
            puts("+");
        else
            puts("|");
    }
    return 0;
}


你可能感兴趣的:(模拟,ACM,poj)