#include<bits/stdc++.h>
using namespace std;
int n,a[5][5],s[10],l,k;
bool ca()
{
if(a[1][1]==2&&a[1][2]==2&&a[1][3]==2)
return true;
if(a[1][1]==2&&a[2][1]==2&&a[3][1]==2)
return true;
if(a[3][1]==2&&a[3][2]==2&&a[3][3]==2)
return true;
if(a[1][3]==2&&a[2][3]==2&&a[3][3]==2)
return true;
if(a[2][2]==2)
{
if(a[1][1]==2&&a[3][3]==2)
return true;
if(a[1][3]==2&&a[3][1]==2)
return true;
if(a[2][1]==2&&a[2][3]==2)
return true;
if(a[1][2]==2&&a[3][2]==2)
return true;
}
return false;
}
bool cu()
{
if(a[1][1]==1&&a[1][2]==1&&a[1][3]==1)
return true;
if(a[1][1]==1&&a[2][1]==1&&a[3][1]==1)
return true;
if(a[3][1]==1&&a[3][2]==1&&a[3][3]==1)
return true;
if(a[1][3]==1&&a[2][3]==1&&a[3][3]==1)
return true;
if(a[2][2]==1)
{
if(a[1][1]==1&&a[3][3]==1)
return true;
if(a[1][3]==1&&a[3][1]==1)
return true;
if(a[2][1]==1&&a[2][3]==1)
return true;
if(a[1][2]==1&&a[3][2]==1)
return true;
}
return false;
}
int main()
{
cin>>n;
while(n)
{
s[++l]=n%10;
n/=10;
}
for(int i=1;i<=l;++i)
{
int d=s[++k];
switch (d)
{
case 1:
{
a[1][1]=k%2+1;
break;
}
case 2:
{
a[1][2]=k%2+1;
break;
}
case 3:
{
a[1][3]=k%2+1;
break;
}
case 4:
{
a[2][1]=k%2+1;
break;
}
case 5:
{
a[2][2]=k%2+1;
break;
}
case 6:
{
a[2][3]=k%2+1;
break;
}
case 7:
{
a[3][1]=k%2+1;
break;
}
case 8:
{
a[3][2]=k%2+1;
break;
}
case 9:
{
a[3][3]=k%2+1;
break;
}
default:
break;
}
}
if(!cu())
{
if(!ca())
cout<<"drew.";
else
cout<<"xiaoa wins.";
}
else
{
if(ca())
cout<<"drew.";
else
cout<<"uim wins.";
}
cout<<ca()<<' '<<cu();
return 0;
}
抱歉,写法很暴力……
思路:转化为九宫格,接着再用ca(判断小a)和cu(判断uim)之间的输赢关系
第四个点:
输入:513764
正确的:uim wins.
我的:xiaoa wins.
本蒟蒻向各位大佬求助!