您的位置:首页 > 其它

poj 2996 Help Me with the Game

2012-06-30 09:27 393 查看
这是一道模拟题:要你找出黑白棋子的位置;注意要求;

View Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<vector>
using namespace std;
void Research1( char c , char map[][35] )
{
int i ,  j,flag=1;
for( i = 1 ; i <= 17; i ++ )
{
for( j = 1 ; j <= 33 ; j ++ )
if( map[i][j]==c )
{
if( c>='A'&&c <='Z' ) printf( "%c",c );
else printf( "%c",c-32 );
printf( "%c%d,",'a'+j/4,i/2 );
}
}

}
void Research2( char c , char map[][35] )
{
int i ,  j,flag=1;
for( i = 17 ; i >=1; i -- )
{
for( j = 1 ; j <= 33 ; j ++ )
if( map[i][j]==c )
{
if( c>='A'&&c <='Z' ) printf( "%c",c );
else printf( "%c",c-32 );
printf( "%c%d,",'a'+j/4,i/2 );
}
}

}
void Research_Black( char map[][35] )
{
Research2( 'k' , map );
Research2( 'q' , map );
Research2( 'r' , map );
Research2( 'b' , map );
Research2( 'n' , map );
int flag = 0;
for( int i = 17 ; i >= 1 ; i -- )
{
for( int j = 1 ; j <= 33 ; j ++  )
{
if( map[i][j]=='p' )
{
if( flag )
printf( ",%c%d",'a'+j/4 ,i/2 );
else printf( "%c%d",'a'+j/4 ,i/2 );
flag++;
}
}
}
}
void Research_White( char map[][35] )
{
Research1( 'K' , map );
Research1( 'Q' , map );
Research1( 'R' , map );
Research1( 'B' , map );
Research1( 'N' , map );
int flag = 0;
for( int i = 1 ; i <= 17 ; i ++ )
{
for( int j = 1 ; j <= 33 ; j ++  )
{
if( map[i][j]=='P' )
{
if( flag )
printf( ",%c%d",'a'+j/4 ,i/2 );
else printf( "%c%d",'a'+j/4 ,i/2 );
flag++;

}
}
}
}
int main(  )
{
char map[35][35];
while( scanf( "%s",map[17]+1 )==1 )
{
for( int i = 16 ; i >=1 ; i -- )
{
scanf( "%s",map[i]+1 );
}
printf( "White: " );
Research_White( map  );
puts( "" );
printf( "Black: " );
Research_Black( map  );
puts( "" );
}
//system( "pause" );
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: