AcWing 1725. 组队井字游戏(模拟)
原题链接
简单
作者:
YHL29
,
2022-04-01 23:14:33
,
所有人可见
,
阅读 269
算法:模拟
#include <iostream>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
int r[2]; // r[0]表示一只牛胜利的数量,r[1]表示两只牛胜利的数量
char g[3][3];
set<string> s; // 用于判重
void check(set<char> &c) {
string t;
for (auto x : c) t += x;
if (t.size() < 3 && !s.count(t)) // 判断是否少于三种牛并且之前未统计过
s.insert(t), r[t.size() - 1] ++; // 标记一下,结果+1
}
int main() {
set<char> a, b;
for (int i = 0; i < 3; i ++) cin >> g[i];
for (int i = 0; i < 3; i ++) {
set<char> c1, c2; // c1处理行,c2处理列
a.insert(g[i][i]), b.insert(g[i][2 - i]); // 处理两条对角线
for (int j = 0; j < 3; j ++)
c1.insert(g[i][j]), c2.insert(g[j][i]);
check(c1), check(c2); // 统计在行或列胜利的牛
}
check(a), check(b); // 统计在对角线胜利的牛
cout << r[0] << '\n' << r[1];
return 0;
}