E-Pawns

Pawns

题意:象棋游戏,每一列都有一个黑棋子和一个白棋子,黑棋子始终在白棋子的上方,黑棋子只能往下放移动,白棋子只能往上方移动,一般情况下棋子只能移动一格,特别的当黑白棋子在棋盘两端时,在端点的棋子要移动两格。、棋子只能在所在列移动而且,而且棋子不会少,最后一个移动棋子的玩家获胜

#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 == 4 && doublejoker % 2 == 1) ||
		                    whitejoker > blackjoker ||
		                    (whitejoker >= blackjoker - 1 && nrmoves % 2 == 1) ? "White" : "Black");
    }
    return 0;
}


原文地址:https://www.cnblogs.com/kuroko-ghh/p/9363342.html