刚刚改啦一下,结果只有第一个和最后一个测试点过啦 BIG佬帮我看一下
#include<bits/stdc++.h>
using namespace std;
char s[10];
bool a1[4][4];
int a[10],ans[4][4]={{1,2,3},{4,5,6},{7,8,9}};
int funga(char s[]){
for(int i=1;i<=9;i++){
a[i]=s[i-1]-'0';
}
if(strlen(s)<9) return 2e9;
else{
for(int i=1;i<=9;i++){
for(int j=0;j<4;j++)
for(int k=0;k<=3;k++){
if(ans[j][k]==a[i]){
if(i%2!=0) a1[j][k]=false;
else a1[j][k]=true;
}
}
}
}
for(int i=0;i<4;i++){
if(a1[i][1]==a1[i][2]&&a1[i][1]==a1[i][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[i][2]&&a1[i][1]==a1[i][3]&&a1[i][1]==false) return -2e9;//竖1
}
for(int i=0;i<4;i++){
for(int j=i+1;j<4;j++){
if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==false) return -2e9;
}
}
for(int i=3;i>=0;i++){
for(int j=i-1;j>=0;j++){
if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==true) return 2e9;
else if(a1[i][1]==a1[j][2]&&a1[i][1]==a1[j+1][3]&&a1[i][1]==false) return -2e9;
}
}
}
int main()
{
cin>>s;
if(funga(s) == 2e9) cout<<"xiaoa wins."<<endl;
else if(funga(s) == -2e9) cout<<"uim wins."<<endl;
else{
cout<<"drew."<<endl;
}
return 0;
}