3481 - 一条龙小游戏
在4399(一个小游戏网站)上有这么一款益智小游戏。玩家需要在3x3的棋盘上,寻找合适的位置放置自己的棋子。
将三个棋子横竖斜任一方向连成一排即可获胜。若有一方取得胜利,则游戏立即结束。如果九个格子全部下满却没有连成一线,则为平手。
安工棋艺大赛准备添加这个项目。于是咱ACM的,小C和小D正在练习这个游戏。准备拿冠军。
每局小C先下.如图,X代表小C的棋子,●代表小D的棋子。这局是小D获胜。
● X
● X
<span style="font-size:18px;"><strong>● X</strong></span>
<strong><span style="font-size:18px;">现在有一些棋盘,你来判断下这些棋盘的情况在游戏中是否可能出现。</span></strong><strong><span style="font-size:18px;"></span></strong>
<br />

Input
第一行给出整数N ( 1<=N<=4000), 表示有N 个棋局需要你来判断,接下来给出 N 个 3x 3矩阵表示游戏棋盘 , O代表是选手小C 的棋子 ,
X代表是选手 小D 的棋子 ,-代表该位置没有放棋子。
棋子。每两个棋局之间有一空行。
Output
对于每组数据 , 若此棋盘可能在游戏中可以出现则输出 “ YES ” , 否则输出 “ NO ” 。
Examples
Input
3 O-X OX- --- OX0 OXX OX- O-X OXX OO-
Output
YES NO YES
Solution 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; }