井字棋穷举法,但是只有20%,不知道漏了什么
#include <stdio.h>
#include <math.h>
int main()
{
int T;
scanf_s("%d", &T);
for (int hh = 0; hh < T; hh++)
{
int to = 0, tg = 0, tx = 0;
char arr[3][5];
scanf_s("%s", arr[0], sizeof(arr[0]));
scanf_s("%s", arr[1], sizeof(arr[1]));
scanf_s("%s", arr[2], sizeof(arr[2]));
for (int h1 = 0; h1 < 3; h1++)
{
for (int h2 = 0; h2 < 3; h2++)
{
if (arr[h1][h2] == 'O') { to++; }
else if (arr[h1][h2] == 'X') { tx++; }
else { tg++; }
}
}
if (tg == 7 || tg == 5 || tg == 9) { printf("Yes\n"); }
else if (tg == 3)
{
if (((arr[0][0] == 'G' && arr[0][1] == 'G' && arr[0][2] == 'G') || (arr[0][0] == 'G' && arr[1][0] == 'G' && arr[2][0] == 'G') || (arr[2][2] == 'G' && arr[1][2] == 'G' && arr[0][2] == 'G') || (arr[2][0] == 'G' && arr[2][1] == 'G' && arr[2][2] == 'G'))&&arr[1][1]!='X')
{
printf("No\n");
}
else if (arr[0][1] == 'G' && arr[1][1] == 'G' && arr[2][1] == 'G')
{
if ((arr[0][0] == 'X' && arr[2][2] == 'X') || (arr[1][0] == 'X' && arr[1][2] == 'X') || (arr[2][0] == 'X' && arr[0][2] == 'X') || (arr[0][0] == 'X' && arr[0][2] == 'X') || (arr[2][0] == 'X' && arr[2][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[1][0] == 'G' && arr[1][1] == 'G' && arr[1][2] == 'G')
{
if ((arr[0][0] == 'X' && arr[2][2] == 'X') || (arr[0][1] == 'X' && arr[2][1] == 'X') || (arr[0][2] == 'X' && arr[2][0] == 'X') || (arr[0][0] == 'X' && arr[2][0] == 'X') || (arr[0][2] == 'X' && arr[2][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[0][0] == 'G' && arr[1][1] == 'G' && arr[2][2] == 'G')
{
if ((arr[0][1] == 'X' && arr[1][2] == 'X' && arr[2][0] == 'X')|| (arr[0][1] == 'O' && arr[1][2] == 'O' && arr[2][0] == 'O'))
{
printf("No\n");
}
else { printf("Yes\n"); }
}
else if (arr[0][2] == 'G' && arr[1][1] == 'G' && arr[2][0] == 'G')
{
if ((arr[0][1] == 'X' && arr[1][0] == 'X' && arr[2][2] == 'X') || (arr[0][1] == 'O' && arr[1][0] == 'O' && arr[2][2] == 'O'))
{
printf("No\n");
}
else { printf("Yes\n"); }
}
else { printf("Yes\n"); }
}
else
{
if (arr[1][1] == 'G')
{
if ((arr[0][0] == 'X' && arr[2][2] == 'X') || (arr[1][0] == 'X' && arr[1][2] == 'X') || (arr[0][2] == 'X' && arr[2][0] == 'X') || (arr[0][1] == 'X' && arr[2][1] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[0][0] == 'G')
{
if ((arr[1][0] == 'X' && arr[2][0] == 'X') || (arr[0][1] == 'X' && arr[0][2] == 'X') || (arr[1][1] == 'X' && arr[2][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[0][2] == 'G')
{
if ((arr[1][2] == 'X' && arr[2][2] == 'X') || (arr[0][1] == 'X' && arr[0][0] == 'X') || (arr[1][1] == 'X' && arr[2][0] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[2][0] == 'G')
{
if ((arr[1][0] == 'X' && arr[0][0] == 'X') || (arr[1][1] == 'X' && arr[0][2] == 'X') || (arr[2][1] == 'X' && arr[2][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[2][2] == 'G')
{
if ((arr[2][1] == 'X' && arr[2][0] == 'X') || (arr[0][2] == 'X' && arr[1][2] == 'X') || (arr[1][1] == 'X' && arr[0][0] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[0][1] == 'G')
{
if ((arr[0][0] == 'X' && arr[0][2] == 'X') || (arr[1][1] == 'X' && arr[2][1] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[1][0] == 'G')
{
if ((arr[0][0] == 'X' && arr[2][0] == 'X') || (arr[1][1] == 'X' && arr[1][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[1][2] == 'G')
{
if ((arr[0][2] == 'X' && arr[2][2] == 'X') || (arr[1][1] == 'X' && arr[1][0] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
else if (arr[2][1] == 'G')
{
if ((arr[0][1] == 'X' && arr[1][1] == 'X') || (arr[2][0] == 'X' && arr[2][2] == 'X'))
{
printf("Yes\n");
}
else { printf("No\n"); }
}
}
}
return 0;
}