@[Yuzilihhh](/user/567522) 巨佬巨佬,代码怎么肝出来的
by ACPC @ 2022-12-30 18:11:15
tql,我只会短代码过这道题
by ACPC @ 2022-12-30 18:12:14
用long long ago……
by Yuzilihhh @ 2022-12-30 18:12:38
long long ago 让我想起了高兴的事情(悲
by Creative_sad_yosgic @ 2022-12-30 18:14:13
@[csy114514](/user/474692) 所以你知道这题怎么解吗……
by Yuzilihhh @ 2022-12-30 18:16:13
抱歉,重新贴一下代码:
```cpp
#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;
}
```
by Yuzilihhh @ 2022-12-30 18:23:00
草(
by _FJqwq @ 2022-12-30 18:44:09
我肯定知道 但是~~你这种做法~~恐怕我不能帮助()
by Creative_sad_yosgic @ 2022-12-30 18:54:01
我先~~用五分钟~~A一下吧()
by Creative_sad_yosgic @ 2022-12-30 18:55:53
~~我好像看不懂你的代码~~ 但是贴一下我的代码吧 希望对你有帮助
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[4][4];
string str;
void solve(char c,int id){
int gyf=c-'0';
a[gyf/3+(gyf%3!=0?1:0)][gyf%3?gyf%3:3]=id;//存储
}
int check(){
if((a[1][1]==a[2][2]&&a[2][2]==a[3][3]&&!a[3][3])||(a[1][3]==a[2][2]&&a[2][2]==a[3][1]&&a[3][1]!=0)) return a[2][2];//对角线
for(int i=1;i<=3;i++) if(a[i][1]==a[i][2]&&a[i][2]==a[i][3]&&a[i][3]!=0) return a[i][3];//行
for(int j=1;j<=3;j++) if(a[1][j]==a[2][j]&&a[2][j]==a[3][j]&&a[3][j]!=0) return a[2][j];//列
return 0;
}
int main()
{
cin>>str;
for(int i=0;i<str.size();i++) solve(str[i],i%2?1:2);
/*for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++)
cout<<a[i][j];
cout<<'\n';
}*/
check()==2?cout<<"xiaoa wins.":check()==1?cout<<"uim wins.":cout<<"drew.";
return 0;
}
```
by Creative_sad_yosgic @ 2022-12-30 19:24:06