poj 2993 Emag eht htiw Em Pleh
这个题是http://poj.org/problem?id=2996的反过来求的;这个题注意的就是建图;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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; }