POJ 2993 Emag eht htiw Em Pleh(水模拟)

Emag eht htiw Em Pleh

Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 1950 Accepted: 1315

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.|
+---+---+---+---+---+---+---+---+

Source

CTU Open 2005       结合2996 
http://www.cnblogs.com/kuangbin/archive/2012/08/13/2636492.html    

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int MAXN=40;
char map[MAXN][MAXN];
char str1[40];
char str2[40];
int main()
{
    // freopen("in.txt","r",stdin);
    // freopen("out.txt","w",stdout);
    for(int i=0;i<8;i++)//
    {
        for(int j=0;j<8;j++)
        {
            map[2*i][4*j]='+';
            map[2*i+1][4*j]='|';
            map[2*i][4*j+1]='-';
            map[2*i][4*j+2]='-';
            map[2*i][4*j+3]='-';
        }
        map[2*i][32]='+';
        map[2*i+1][32]='|';
        map[2*i][33]='\0';

        if(i==7)
        {
            for(int j=0;j<8;j++)
            {
               map[2*i+2][4*j]='+';
               map[2*i+2][4*j+1]='-';
               map[2*i+2][4*j+2]='-';
               map[2*i+2][4*j+3]='-';
            }
            map[2*i+2][32]='+';
            map[2*i+2][33]='\0';
        }

        for(int j=0;j<8;j++)
        {
            if((i+j)%2==0)
            {
                map[2*i+1][4*j+1]='.';
                map[2*i+1][4*j+2]='.';
                map[2*i+1][4*j+3]='.';
            }
            else
            {
                map[2*i+1][4*j+1]=':';
                map[2*i+1][4*j+2]=':';
                map[2*i+1][4*j+3]=':';
            }
        }
        map[2*i+1][33]='\0';
    }



    scanf("%s%s",&str1,&str2);
    //printf("%s\n%s\n",str1,str2);
    if(strcmp(str1,"White:")==0)
    {
        for(int i=0;str2[i]!=0;)
        {
            if(str2[i]==','){i++;continue;}
            if(str2[i]>='A'&&str2[i]<='Z')//大写字母
            {
                int x=8-(str2[i+2]-'0');
                int y=str2[i+1]-'a';
                map[2*x+1][4*y+2]=str2[i];
                i+=3;
            }
            else
            {
                int x=8-(str2[i+1]-'0');
                int y=str2[i+0]-'a';
                map[2*x+1][4*y+2]='P';
                i+=2;
            }
        }
    }
    else
    {
        for(int i=0;str2[i]!=0;)
        {
            if(str2[i]==','){i++;continue;}
            if(str2[i]>='A'&&str2[i]<='Z')//大写字母
            {
                int x=8-(str2[i+2]-'0');
                int y=str2[i+1]-'a';
                map[2*x+1][4*y+2]=str2[i]-'A'+'a';
                i+=3;
            }
            else
            {
                int x=8-(str2[i+1]-'0');
                int y=str2[i+0]-'a';
                map[2*x+1][4*y+2]='p';
                i+=2;
            }
        }
    }

    //重复一遍
    scanf("%s%s",&str1,&str2);
    //printf("%s\n%s\n",str1,str2);
    if(strcmp(str1,"White:")==0)
    {
        for(int i=0;str2[i]!=0;)
        {
            if(str2[i]==','){i++;continue;}
            if(str2[i]>='A'&&str2[i]<='Z')//大写字母
            {
                int x=8-(str2[i+2]-'0');
                int y=str2[i+1]-'a';
                map[2*x+1][4*y+2]=str2[i];
                i+=3;
            }
            else
            {
                int x=8-(str2[i+1]-'0');
                int y=str2[i+0]-'a';
                map[2*x+1][4*y+2]='P';
                i+=2;
            }
        }
    }
    else
    {
        for(int i=0;str2[i]!=0;)
        {
            if(str2[i]==','){i++;continue;}
            if(str2[i]>='A'&&str2[i]<='Z')//大写字母
            {
                int x=8-(str2[i+2]-'0');
                int y=str2[i+1]-'a';
                map[2*x+1][4*y+2]=str2[i]-'A'+'a';
                i+=3;
            }
            else
            {
                int x=8-(str2[i+1]-'0');
                int y=str2[i+0]-'a';
                map[2*x+1][4*y+2]='p';
                i+=2;
            }
        }
    }


    for(int i=0;i<17;i++)
      printf("%s\n",map[i]);

    return 0;
}

 

    原文作者:kuangbin
    原文地址: https://www.cnblogs.com/kuangbin/archive/2012/08/13/2636657.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞