POJ 2993 Emag eht htiw Em Pleh解题报告

来源:岁月联盟 编辑:exp 时间:2012-08-12
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.|
+---+---+---+---+---+---+---+---+
这个题用了最笨的方法,结果RE了两次,调试了好久,原理就不说了,衰。。。
[cpp]
#include<iostream> 
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
using namespace std; 
char a[18][34]={ 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}, 
{'|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|',':',':',':','|','.','.','.','|'}, 
{'+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+','-','-','-','+'}}; 
 
int main() 

    int i,j; 
    /*for(i=0;i<17;i++)
    {
        for(j=0;j<33;j++)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }*/ 
    char white[1000]; 
    char black[1000]; 
    int lenw,lenb; 
    gets(white); 
    gets(black); 
    //cout<<white<<endl; 
    //cout<<black<<endl; 
    lenw=strlen(white); 
     
    lenb=strlen(black); 
/*  for(i=0;i<17;i++)
    {
        for(j=0;j<33;j++)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }*/ 
    i=7; 
    for(i=7;i<lenw;i+=4) 
    { 
        if(white[i]>=65&&white[i]<=90)//判断第8个字符是不是大写字母。 
        a[(9-(white[i+2]-'0'))*2-1][(white[i+1]-'a')*4+2]=white[i]; 
        else//不是就撤,表示后面只有P了 
            break; 
    } 
    for(j=i;j<lenw;j+=3) 
    { 
        if(white[j]>=97&&white[j]<=122)//判断有没有小写字母 
        a[(9-(white[j+1]-'0'))*2-1][(white[j]-'a')*4+2]='P'; 
        else//没有了就over了。 
            break; 
    } 
    i=7;//同上哈,不罗嗦。 
    for(i=7;i<lenb;i+=4) 
    { 
        if(black[i]>=65&&black[i]<=90) 
        a[(17-(black[i+2]-'0')*2)][(black[i+1]-'a')*4+2]=black[i]+32; 
        else  
            break; 
    } 
    for(j=i;j<lenb;j+=3) 
    { 
        if(black[j]>=97&&black[j]<=122) 
        a[(17-(black[j+1]-'0')*2)][(black[j]-'a')*4+2]='p'; 
        else 
            break; 
    } 
    for(i=0;i<17;i++) 
    { 
        for(j=0;j<33;j++) 
        { 
            cout<<a[i][j]; 
        } 
        cout<<endl; 
    } www.2cto.com
    return 0; 

作者:CSUST_ACM