AcWing 1725. 组队井字游戏(暴力统计枚举)
原题链接
简单
作者:
Jackle
,
2022-04-01 22:35:17
,
所有人可见
,
阅读 208
#include<bits/stdc++.h>
using namespace std;
char g[4][4];
int rol[26][4],cow[26][4],d1[26],d2[26];
int main()
{
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)cin>>g[i][j];
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)cow[g[i][j]-'A'][i]++; //统计行
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)rol[g[j][i]-'A'][i]++; //统计列
//统计对角线
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
if(i==j)d1[g[i][j]-'A']++;
if(i+j==4)d2[g[i][j]-'A']++;
}
}
int ans=0,bns=0;
for(int i=0;i<26;i++){
bool ok=false;
for(int j=1;j<=3;j++){
if(cow[i][j]==3)ok=true;
if(rol[i][j]==3)ok=true;
}
if(d1[i]==3||d2[i]==3)ok=true;
if(ok)ans++;
}
for(int i=0;i<26;i++)
{
for(int j=i+1;j<26;j++)
{
bool ok=false;
for(int k=1;k<=3;k++)
{
int t1=cow[i][k],t2=cow[j][k];
int t3=rol[i][k],t4=rol[j][k];
if(t1&&t2&&t1+t2==3)ok=true;
if(t3&&t4&&t3+t4==3)ok=true;
}
int t5=d1[i],t6=d1[j];
int t7=d2[i],t8=d2[j];
if(t5&&t6&&t5+t6==3)ok=true;
if(t7&&t8&&t7+t8==3)ok=true;
if(ok)bns++;
}
}
cout<<ans<<endl<<bns<<endl;
return 0;
}