题意:象棋游戏,每一列都有一个黑棋子和一个白棋子,黑棋子始终在白棋子的上方,黑棋子只能往下放移动,白棋子只能往上方移动,一般情况下棋子只能移动一格,特别的当黑白棋子在棋盘两端时,在端点的棋子要移动两格。、棋子只能在所在列移动而且,而且棋子不会少,最后一个移动棋子的玩家获胜
#include<bits/stdc++.h>
using namespace std;
const int maxn = 20+5;
char board[maxn][maxn];
int n,m;
int main()
{
//freopen("in.txt","r",stdin);
int t;
cin>>t;
while(t--)
{
int doublejoker=0;
int whitejoker=0,blackjoker=0;
int nrmoves=0;
int w,b;
int i,j;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
scanf("%s",board[n-1-i]);
for(j=0; j<m; j++)
{
for(i=0; board[i][j]!='W'; i++);
w=i;
for(i++; board[i][j]!='B'; i++);
b=i;
if(w==0&&b==n-1&&n>3)
doublejoker++;
else
{
if(w==0&&b>2)
whitejoker+=b-2;
else if(b==n-1&&w<n-3)
blackjoker+=n-3-w;
nrmoves+=b-w-1;
}
}
printf("%s wins\n", (n == 4 && doublejoker % 2 == 1) ||
whitejoker > blackjoker ||
(whitejoker >= blackjoker - 1 && nrmoves % 2 == 1) ? "White" : "Black");
}
return 0;
}