3
bool isSafe(int i, int j, int r, int c, vector<vector<char>> &arr,4
vector<vector<bool>> &visited) {5
if (i < 0 || i > r || j < 0 || j > c) {8
// cout<<arr[i][j]<<" ";9
if (arr[i][j] != 'X') {12
if (arr[i][j] == 'X' && visited[i][j] == true) {16
if (arr[i][j] == 'X' && visited[i][j] == false) {22
void solve(vector<vector<char>> &arr, vector<vector<bool>> &visited, int &r, int &c, int i,24
if ((i > r && j > c) && (i < 0 && j < 0)) {29
if (isSafe(i + 1, j, r, c, arr, visited)) {30
visited[i + 1][j] = true;31
solve(arr, visited, r, c, i + 1, j);33
// if(arr[i][j] == 'X'){34
// visited[i][j] = true;39
if (isSafe(i, j + 1, r, c, arr, visited)) {40
visited[i][j + 1] = true;41
solve(arr, visited, r, c, i, j + 1);43
// if(arr[i][j] == 'X'){44
// visited[i][j] = true;48
if (isSafe(i, j - 1, r, c, arr, visited)) {49
visited[i][j - 1] = true;50
solve(arr, visited, r, c, i, j - 1);52
// if(arr[i][j] == 'X'){53
// visited[i][j] = true;57
if (isSafe(i - 1, j, r, c, arr, visited)) {58
visited[i - 1][j] = true;59
solve(arr, visited, r, c, i - 1, j);61
// if(arr[i][j] == 'X'){62
// visited[i][j] = true;66
int countBattleships(vector<vector<char>> &board) {67
int row = board.size() - 1;68
int col = board[0].size() - 1;69
vector<vector<bool>> isVisited(row + 1, vector<bool>(col + 1, false));70
vector<vector<int>> toStart;71
for (int i = 0; i < board.size(); i++) {72
for (int j = 0; j < board[i].size(); j++) {73
if (board[i][j] == 'X') {77
// cout<<i<<" "<<j<<endl;78
toStart.push_back(temp);83
for (int i = 0; i < toStart.size(); i++) {84
if (isVisited[toStart[i][0]][toStart[i][1]]) {86
isVisited[toStart[i][0]][toStart[i][1]] = true;87
solve(board, isVisited, row, col, toStart[i][0], toStart[i][1]);92
// for(auto cc:isVisited){