/** * @param board a 2D board containing 'X' and 'O' * @return void */ void surroundedRegions(vector<vector<char>>& board) { // Write your code here int m = board.size(); if (!m) return; int n = board[0].size(); if (!n) return; for (int i = 0; i < m; i ++) for (int j = 0; j < n; j ++) if (i == 0 || i == m - 1 || j == 0 || j == n - 1) markBoard(board, m, n, i, j, 'Q'); for (int i = 0; i < m; i ++) { for (int j = 0; j < n; j ++) { char c = board[i][j]; if (c == 'O') board[i][j] = 'X'; else if (c == 'Q') board[i][j] = 'O'; } } return; }
void markBoard(vector<vector<char>>& board, int m, int n, int i, int j, char c) { if (i < 0 || i >= m || j < 0 || j >= n) return; if (board[i][j] != 'O') return; board[i][j] = c; markBoard(board, m, n, i+1, j, c); markBoard(board, m, n, i-1, j, c); markBoard(board, m, n, i, j+1, c); markBoard(board, m, n, i, j-1, c); return; }
void chessBoard::markBoard(std::vector<int> queenVec) { for(int row = 0; row < queenVec.size(); row++) { markBoard(row, queenVec[row]); } for(int i = 0; i < queenVec.size(); i++) { //Makes sure the spots with queens on them have a 'Q' (they may be overridden in the above markBoard(int, int) method) charBoard[i][queenVec[i]] = 'Q'; } // printCharBoard(); }