3481 - 一条龙小游戏

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

在4399(一个小游戏网站)上有这么一款益智小游戏。玩家需要在3x3的棋盘上,寻找合适的位置放置自己的棋子。
将三个棋子横竖斜任一方向连成一排即可获胜。若有一方取得胜利,则游戏立即结束。如果九个格子全部下满却没有连成一线,则为平手。
安工棋艺大赛准备添加这个项目。于是咱ACM的,小C和小D正在练习这个游戏。准备拿冠军。
每局小C先下.如图,X代表小C的棋子,●代表小D的棋子。这局是小D获胜。
●   X
● X

<span style="font-size:18px;"><strong>● &nbsp; X</strong></span> 

<strong><span style="font-size:18px;">现在有一些棋盘,你来判断下这些棋盘的情况在游戏中是否可能出现。</span></strong><strong><span style="font-size:18px;"></span></strong> 

<br />

题目输入

第一行给出整数N ( 1<=N<=4000), 表示有N 个棋局需要你来判断,接下来给出 N 个 3x 3矩阵表示游戏棋盘 , O代表是选手小C 的棋子 ,
 X代表是选手 小D 的棋子 ,-代表该位置没有放棋子。
棋子。每两个棋局之间有一空行。

题目输出

对于每组数据 , 若此棋盘可能在游戏中可以出现则输出 “ YES ” , 否则输出 “ NO ” 。

输入/输出样例

输入格式

3
O-X
OX-
---
OX0
OXX
OX-
O-X
OXX
OO-

输出格式

YES
NO
YES

C++解答

#include<iostream>
using namespace std;
int main()
{

    int i,T,j,x,A,B,Ax,Bx;
    char a[3][3];
    cin>>T;
    while(T--)
    {
        Ax=0;
        Bx=0;
        A=0;
        B=0;
        for(i=0; i<3; i++)
        {
            for(j=0; j<3; j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='O')
                    A++;
                else if(a[i][j]=='X')
                    B++;
            }
        }
        if(A-B==1)
        {
            if(a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&(a[1][0]!='-'))
            {
                if(a[1][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&(a[2][0]!='-'))
            {
                if(a[2][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&(a[0][1]!='-'))
            {
                if(a[0][1]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&(a[0][2]!='-'))
            {
                if(a[0][2]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&(a[0][2]!='-'))
            {
                if(a[0][2]=='O')
                    Ax++;
                else Bx++;
            }
            if(Ax==1&&Bx==0)
                cout<<"YES"<<endl;
            else if(Ax==0&&Bx==0)
                cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        else if(A==B&&A!=0)
        {
            if(a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&(a[1][0]!='-'))
            {
                if(a[1][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&(a[2][0]!='-'))
            {
                if(a[2][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&(a[0][1]!='-'))
            {
                if(a[0][1]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&(a[0][2]!='-'))
            {
                if(a[0][2]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&(a[0][0]!='-'))
            {
                if(a[0][0]=='O')
                    Ax++;
                else Bx++;
            }
            if(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&(a[0][2]!='-'))
            {
                if(a[0][2]=='O')
                    Ax++;
                else Bx++;
            }
            if(Ax==0&&Bx==1)
                cout<<"YES"<<endl;
            else if(Ax==0&&Bx==0)
                cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        else  if(A==0&&B==0)
            cout<<"YES"<<endl;
        else  cout<<"NO"<<endl;
    }
    return 0;

}