题目链接:http://codeforces.com/contest/3/problem/C
提示:此题巨坑,一定要注意是illegal的情况
#include <iostream>
#include <cstdio>
using namespace std;
char s[5][5];
int main()
{
int f1=0,f2=0;
int sumx=0,sum0=0;
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
cin>>s[i][j];
if(s[i][j] == 'X')
sumx++;
else if(s[i][j] == '0')
sum0++;
}
}
if(sumx-sum0>1 || sum0>sumx)
puts("illegal");
else
{
for(int i=0; i<3; i++)
{
int sum=0;
for(int j=0; j<3; j++)
{
if(s[i][j] == 'X')
sum++;
}
if(sum == 3)
{
f1=1;
break;
}
}
for(int i=0; i<3; i++)
{
int sum=0;
for(int j=0; j<3; j++)
{
if(s[i][j] == '0')
sum++;
}
if(sum == 3)
{
f2=1;
break;
}
}
for(int i=0; i<3; i++)
{
int sum=0;
for(int j=0; j<3; j++)
{
if(s[j][i] == 'X')
sum++;
}
if(sum == 3)
{
f1=1;
break;
}
}
for(int i=0; i<3; i++)
{
int sum=0;
for(int j=0; j<3; j++)
{
if(s[j][i] == '0')
sum++;
}
if(sum == 3)
{
f2=1;
break;
}
}
if((s[0][0]=='X'&&s[1][1]=='X'&&s[2][2]=='X')||(s[0][2]=='X'&&s[1][1]=='X'&&s[2][0]=='X'))
f1=1;
if((s[0][0]=='0'&&s[1][1]=='0'&&s[2][2]=='0')||(s[0][2]=='0'&&s[1][1]=='0'&&s[2][0]=='0'))
f2=1;
if(f1==1&&f2==1 || (f1==1&&f2==0&&(sumx==sum0)) || (f1==0&&f2==1&&(sumx-sum0==1)))
puts("illegal");
else if(f1==1&&f2==0&&(sumx-sum0==1))
puts("the first player won");
else if(f2==1&&f1==0&&(sumx==sum0))
puts("the second player won");
if(f1 + f2 ==0)
{
if(sum0 + sumx == 9)
puts("draw");
else
{
if(sum0==sumx)
puts("first");
else if(sumx>sum0)
puts("second");
else
puts("illegal");
}
}
}
return 0;
}