-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathValid Tic-Tac-Toe State.cpp
60 lines (47 loc) · 1.61 KB
/
Valid Tic-Tac-Toe State.cpp
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class Solution {
public:
bool win(vector<string> board, char player, int size){
int row_win=0, col_win=0, diagonal_win=0, rev_diagonal_win=0;
for(int i=0;i<3;i++){
row_win=0;
col_win=0;
for(int j=0;j<3;j++){
if(player == board[i][j]){
row_win++;
if(row_win == 3)
return 1;
}
if(player == board[j][i]){
col_win++;
if(col_win == 3)
return 1;
}
if(i==j && player==board[i][j]){
diagonal_win++;
}
if(i+j == size-1 && player==board[i][j]){
rev_diagonal_win++;
}
}
}
if(diagonal_win==3 || rev_diagonal_win==3)
return 1;
return 0;
}
bool validTicTacToe(vector<string>& board) {
int count_x=0, count_o=0, size = board.size();
for(auto i:board){
for(auto j:i){
if(j=='X') count_x++;
else if(j=='O') count_o++;
}
}
if(count_o>count_x || count_x-count_o>=2)
return false;
if(count_x>=3 && count_x==count_o && win(board, 'X', size))
return false;
if(count_o>=3 && count_x>count_o && win(board, 'O', size))
return false;
return true;
}
};