AcWing 1725. 组队井字游戏
原题链接
简单
作者:
dong_
,
2022-04-01 21:54:17
,
所有人可见
,
阅读 238
求赞
楼上都是大佬,我只会暴力
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int p, q;
bool st[500];
char c[5][5];
void find(vector<char>a,vector<char>b){
int t = 0;
for(auto i : a)t += i; // 只要之前没有出现过这种组合就 ++
if(a.size() == 1 && !st[t])p ++ ,st[t] = 1;
else if(a.size() == 2 && !st[t])q ++ ,st[t] = 1;
t = 0;
for(auto i : b)t += i;
if(b.size() == 1 && !st[t])p ++ ,st[t] = 1;
else if(b.size() == 2 && !st[t])q ++ ,st[t] = 1;
}
int main(){
for (int i = 1; i <= 3; i ++ ){
for (int j = 1; j <= 3; j ++ )
cin >> c[i][j];
}
for (int i = 1; i <= 3; i ++ ){
vector<char>a, b;
for (int j = 1; j <= 3; j ++ ){ //找到每行每列不同的元素
int r = 0, l = 0;
for(; l < a.size(); l ++ ){
if(a[l] == c[i][j])break;
}
if(l == a.size())a.push_back(c[i][j]);
for (; r < b.size(); r ++ ){
if(b[r] == c[j][i])break;
}
if(r == b.size())b.push_back(c[j][i]);
}
find(a,b);
}
vector<char>a, b;
for(int i = 1; i <= 3; i ++ ){
int l = 0, r = 0;
for(; l < a.size(); l ++ ){
if(a[l] == c[i][i])break;
}
if(l == a.size())a.push_back(c[i][i]);
for(; r < b.size(); r ++ ){
if(b[r] == c[i][4 - i])break;
}
if(r == b.size())b.push_back(c[i][4 - i]);
}
find(a, b);
cout << p << endl << q << endl;
return 0;
}