problemscpp
A collection of my answers to algorithm problems in c++.
函数
acwing::acwing1725 命名空间参考

  1. 组队井字游戏
更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (acwing1725, case1)
 

详细描述

  1. 组队井字游戏

函数说明

◆ main()

int acwing::acwing1725::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing.cpp6070 行定义.

6070 {
6071 unordered_set<char> row[3];
6072 unordered_set<char> col[3];
6073 unordered_set<char> main_diagonal;
6074 unordered_set<char> leading_diagonal;
6075 unordered_set<char> win_1;
6076 auto hash = [](const pair<char, char> &p) {
6077 vector vec = {p.first, p.second};
6078 sort(vec.begin(), vec.end());
6079 unsigned int val = 0;
6080 for(auto &ch: vec) {
6081 ch -= 'A';
6082 val *= 26;
6083 val += ch;
6084 }
6085 return val;
6086 };
6087 unordered_set<pair<char, char>, decltype(hash)> win_2;
6088 char board[3][3];
6089 for(int i = 0; i < 3; i++) {
6090 for(int j = 0; j < 3; j++) {
6091 cin >> board[i][j];
6092 row[i].insert(board[i][j]);
6093 col[j].insert(board[i][j]);
6094 }
6095 }
6096 main_diagonal.insert(board[0][0]);
6097 main_diagonal.insert(board[1][1]);
6098 main_diagonal.insert(board[2][2]);
6099 leading_diagonal.insert(board[0][2]);
6100 leading_diagonal.insert(board[1][1]);
6101 leading_diagonal.insert(board[2][0]);
6102 for(int i = 0; i < 3; i++) {
6103 if(row[i].size() == 1) {
6104 win_1.insert(board[i][0]);
6105 } else if(row[i].size() == 2) {
6106 win_2.insert(make_pair(*row[i].begin(), *++row[i].begin()));
6107 }
6108 if(col[i].size() == 1) {
6109 win_1.insert(board[0][i]);
6110 } else if(col[i].size() == 2) {
6111 win_2.insert(make_pair(*col[i].begin(), *++col[i].begin()));
6112 }
6113 }
6114 if(main_diagonal.size() == 1) {
6115 win_1.insert(board[1][1]);
6116 } else if(main_diagonal.size() == 2) {
6117 win_2.insert(make_pair(*main_diagonal.begin(), *++main_diagonal.begin()));
6118 }
6119 if(leading_diagonal.size() == 1) {
6120 win_1.insert(board[1][1]);
6121 } else if(leading_diagonal.size() == 2) {
6122 win_2.insert(make_pair(*leading_diagonal.begin(), *++leading_diagonal.begin()));
6123 }
6124 cout << win_1.size() << endl
6125 << win_2.size();
6126 return 0;
6127 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST()

acwing::acwing1725::TEST ( acwing1725  ,
case1   
)

在文件 acwing_test.cpp2861 行定义.

2861 {
2862 istringstream in("COW\n"
2863 "XXO\n"
2864 "ABC");
2865 auto out = ostringstream();
2866 main(in, out);
2867 const auto ans = out.str();
2868 ASSERT_EQ("0\n"
2869 "2",
2870 ans);
2871 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().