题目链接:http://codeforces.com/problemset/problem/592/A
题 意:有一个8*8的棋盘,A先走,B后走,每次A可以操纵一个W棋子向上走B可以操作一个棋子向下走,如果路上被挡住了,那就不能走了。然后问你,谁会第一个走到上下边界位置。
思 路:直接模拟过程就可以了。
代码如下:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
typedef __int64 LL;
int main()
{
char v[9][9];
while( scanf ( "%s", v[1] ) != EOF )
{
int ans1 = 101, ans2 = 101;
for( int i = 2; i <= 8; i ++ )
scanf ( "%s", v[i] );
for( int i = 0; i < 8; i ++ )
{
for( int j = 1; j < 9; j ++ )
{
if( v[j][i] == 'B' ) continue;
if( v[j][i] == 'W' )
{
int f = 1;
for( int k = j-1; k > 0; k -- )//看路上是否有阻碍
if( v[k][i] != '.' )
{
f = 0;
break;
}
if( f ) ans1 = min( ans1, j-1 );
}
}
for( int j = 8; j > 0; j -- )
{
if( v[j][i] == 'W' ) continue;
if( v[j][i] == 'B' )
{
int f = 1;
for( int k = j+1; k < 9; k ++ )//看路上是否有阻碍
if( v[k][i] != '.' )
{
f = 0;
break;
}
if( f ) ans2 = min( ans2, 8-j );
}
}
}
if( ans1 <= ans2 )
{
printf("A\n");
}
else printf("B\n");
}
return 0;
}