poj 2993 Emag eht htiw Em Pleh

这个题是http://poj.org/problem?id=2996的反过来求的;这个题注意的就是建图;

View Code
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<cstring>
#include<vector>
using namespace std;
void Get_map( char map[35][35] )
{
    map[2][2]=':';map[2][3]=':';map[2][4]=':';
    for( int i = 1 ; i <= 17 ; i ++ )
    {
       for( int j = 1 ; j <= 33 ; j ++ )
       {
               if( i%2==1 ) 
            {
                if( j %4 ==1 )
                map[i][j] = '+';
                else map[i][j] ='-'    ;    
            }
            else
            {
                if( j%4 ==1 ) map[i][j] = '|';
                else 
                  if( j<=4 ) 
                  {
                    if( map[i-2][j] ==':' ) map[i][j] ='.';
                    else map[i][j] = ':';
                  }
                    else if( map[i][j-4] ==':' ) map[i][j] ='.';
                         else map[i][j] = ':';    
            }         
       }
    }    
}
void Get_Black( char map[][35],char Black[] )
{
   int len = strlen( Black ),i=7;//printf( "afas" );
   while( i < len )
   {//printf( "sfas" );
        switch( Black[i] )
        {
           case 'K': map[(Black[i+2]-'0')*2][(Black[i+1]-'a')*4+3] = 'k';
                     i+=4; break;
           case 'Q': map[(Black[i+2]-'0')*2][(Black[i+1]-'a')*4+3] = 'q';
                     i+=4; break;
           case 'R': map[(Black[i+2]-'0')*2][(Black[i+1]-'a')*4+3] = 'r';
                     i+=4; break;
           case 'B': map[(Black[i+2]-'0')*2][(Black[i+1]-'a')*4+3] = 'b';
                     i+=4; break;
           case 'N': map[(Black[i+2]-'0')*2][(Black[i+1]-'a')*4+3] = 'n';
                     i+=4; break;
           default:map[(Black[i+1]-'0')*2][(Black[i]-'a')*4+3] = 'p';
                     i+=3; break;
                      
        }
                
   }    
}
void Get_White( char map[][35],char White[] )
{
   int len = strlen( White ),i=7;
   while( i < len )
   {
        switch( White[i] )
        {
           case 'K': map[(White[i+2]-'0')*2][(White[i+1]-'a')*4+3] = 'K';
                     i+=4; break;
           case 'Q': map[(White[i+2]-'0')*2][(White[i+1]-'a')*4+3] = 'Q';
                     i+=4; break;
           case 'R': map[(White[i+2]-'0')*2][(White[i+1]-'a')*4+3] = 'R';
                     i+=4; break;
           case 'B': map[(White[i+2]-'0')*2][(White[i+1]-'a')*4+3] = 'B';
                     i+=4; break;
           case 'N': map[(White[i+2]-'0')*2][(White[i+1]-'a')*4+3] = 'N';
                     i+=4; break;
           default:map[(White[i+1]-'0')*2][(White[i]-'a')*4+3] = 'P';
                     i+=3; break;
                      
        }        
   }    
}
int main(  )
{
    char map[35][35];
    char White[124],Black[124];
    while( gets(White) )
    {
        gets(Black);
        Get_map( map );
        Get_Black( map , Black );
        Get_White( map , White );
        for( int i = 17 ; i >= 1; i -- )
        {
           for( int j = 1 ; j <= 33 ; j ++ )
             printf( "%c",map[i][j] );
          puts( "" );
        }
    }
    //system( "pause" );
    return 0;
}

 

posted @ 2012-06-30 11:02  wutaoKeen  阅读(120)  评论(0编辑  收藏  举报