一道模拟题不知道哪里错了? https://www.luogu.com.cn/problem/CF3C
#include<bits/stdc++.h>
using namespace std;
char a[10][10];
int sum1,sum2;
bool check2()
{
if(a[1][1]=='X'&&a[1][2]=='X'&&a[1][3]=='X') return true;
if(a[2][1]=='X'&&a[2][2]=='X'&&a[2][3]=='X') return true;
if(a[3][1]=='X'&&a[3][2]=='X'&&a[3][3]=='X') return true;
if(a[1][1]=='X'&&a[2][1]=='X'&&a[3][1]=='X') return true;
if(a[1][2]=='X'&&a[2][2]=='X'&&a[3][2]=='X') return true;
if(a[1][3]=='X'&&a[2][3]=='X'&&a[3][3]=='X') return true;
if(a[1][1]=='X'&&a[2][2]=='X'&&a[3][3]=='X') return true;
if(a[1][3]=='X'&&a[2][2]=='X'&&a[3][1]=='X') return true;
return false;
}
bool check3()
{
if(a[1][1]=='0'&&a[1][2]=='0'&&a[1][3]=='0') return true;
if(a[2][1]=='0'&&a[2][2]=='0'&&a[2][3]=='0') return true;
if(a[3][1]=='0'&&a[3][2]=='0'&&a[3][3]=='0') return true;
if(a[1][1]=='0'&&a[2][1]=='0'&&a[3][1]=='0') return true;
if(a[1][2]=='0'&&a[2][2]=='0'&&a[3][2]=='0') return true;
if(a[1][3]=='0'&&a[2][3]=='0'&&a[3][3]=='0') return true;
if(a[1][1]=='0'&&a[2][2]=='0'&&a[3][3]=='0') return true;
if(a[1][3]=='0'&&a[2][2]=='0'&&a[3][1]=='0') return true;
return false;
}
bool check1()
{
if(sum1-sum2>1) return true;
if(sum2>sum1) return true;
if(check2()&&check3()) return true;
if(check3()&&sum1>sum2) return true;//既然第二个人赢了,棋子数不可能小于第一个
if(check2()&&sum1==sum2) return true;
return false;
}
int main()
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
cin>>a[i][j];
if(a[i][j]=='X')
{
sum1++;
}
else if(a[i][j]=='0')
{
sum2++;
}
}
}
if(check1()) cout<<"illegal"<<endl;
if(check2()) cout<<"the first player won"<<endl;
if(check3()) cout<<"the second player won"<<endl;
if(sum1+sum2==9) cout<<"draw"<<endl;
if(sum1==sum2) cout<<"first"<<endl;
else cout<<"second"<<endl;
return 0;
}