1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class TicTacToe { public: TicTacToe(int n) : n(n) { v.resize(n); h.resize(n); }
int move(int row, int col, int player) { int s = (player << 1) - 3; if (abs(h[row] += s) == n) return player; if (abs(v[col] += s) == n) return player; if (abs(d += (row == col) * s) == n) return player; if (abs(ad += (row + col == n - 1) * s) == n) return player; return 0; }
int n; vector<int> v, h; int d = 0, ad = 0; };
|