PersonalCorpus 版 (精华区)
1121762 2002/09/27 05:15:22.270 Accepted
0:00.000 64 18188 C++ 10363 - Tic Tac Toe
void main()
{
#ifndef ONLINE_JUDGE
freopen("c:\\0acm\\uva\\contest9-21\\iB","r",stdin);
freopen("c:\\0acm\\uva\\contest9-21\\oB","w",stdout);
#endif
int i,j,n,t,to,tx;
char s[3][3];
bool m[5];
scanf("%d\n",&t);
while (t>0) {
t--;
gets(s[0]);
gets(s[1]);
gets(s[2]);
to=0; tx=0;
for (i=0;i<3;i++) for (j=0;j<3;j++) {
if (s[i][j]=='O') to++;
if (s[i][j]=='X') tx++;
}
if (!((tx-to==1)||(tx==to))) {
printf("no\n");
gets(s[0]); continue;
}
m[0]=m[1]=m[2]=m[3]=m[4]=false;
for (i=0;i<3;i++)
if ((s[i][0]==s[i][1])&&(s[i][0]==s[i][2])&&(s[i][0]!='.
')) m[i]=true;
if ((s[0][0]==s[1][1])&&(s[0][0]==s[2][2])&&(s[0][0]!='.'))
m[3]=true;
if ((s[0][2]==s[1][1])&&(s[0][2]==s[2][0])&&(s[2][0]!='.'))
m[4]=true;
if (m[0]&&m[1]&&(s[0][0]==s[1][0])) {
printf("no\n");
gets(s[0]); continue;
}
if (m[0]&&m[2]&&(s[0][0]==s[2][0])) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&m[1]&&(s[2][0]==s[1][0])) {
printf("no\n");
gets(s[0]); continue;
}
if (tx==to) {
if (m[0]&&(s[0][0]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[1]&&(s[1][0]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&(s[2][0]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[3]&&(s[1][1]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[4]&&(s[1][1]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
}
if (tx==to+1) {
if (m[0]&&(s[0][0]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[1]&&(s[1][0]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&(s[2][0]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[3]&&(s[1][1]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[4]&&(s[1][1]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
}
m[0]=m[1]=m[2]=false;
for (i=0;i<3;i++)
if ((s[0][i]==s[1][i])&&(s[0][i]==s[2][i])&&(s[0][i]!='.
')) m[i]=true;
if (m[0]&&m[1]&&(s[0][0]==s[0][1])) {
printf("no\n");
gets(s[0]); continue;
}
if (m[0]&&m[2]&&(s[0][0]==s[0][2])) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&m[1]&&(s[0][2]==s[0][1])) {
printf("no\n");
gets(s[0]); continue;
}
if (tx==to) {
if (m[0]&&(s[0][0]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[1]&&(s[0][1]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&(s[0][2]=='X')) {
printf("no\n");
gets(s[0]); continue;
}
}
if (tx==to+1) {
if (m[0]&&(s[0][0]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[1]&&(s[0][1]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
if (m[2]&&(s[0][2]=='O')) {
printf("no\n");
gets(s[0]); continue;
}
}
printf("yes\n");
gets(s[0]);
}
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.610毫秒