public class Q5 { //first solution public static int countInside (int[][] map, int row, int col) { int initialCount = 0; for(int[] innerArray: map) { for(int val: innerArray) { if (val = 1) initialCount++; } } countInsideRecursive(row, col, map); int finalCount = 0; for(int[] innerArray: map) { for(int val: innerArray) { if (val = 1) finalCount++; } } return finalCount - initialCount; } private static void countInsideRecursive(int row, int col, int[][] map) { map[row][col] = 1; if (room[row - 1][col] == 0) //up countInsideRecursive(row - 1, col, map); if (room[row + 1][col] == 0) //down countInsideRecursive(row + 1, col, map); if (room[row][col - 1] == 0) //left countInsideRecursive(row, col - 1, map); if (room[row][col + 1] == 0) //right countInsideRecursive(row, col+1, map); } //better solution private static int countInside(int row, int col, int[][] map) { map[row][col] = 1; int count = 0; if (room[row - 1][col] == 0) {//up count = 1 + countInside(row - 1, col, map); } if (room[row + 1][col] == 0) {//down count = 1 + countInside(row + 1, col, map); } if (room[row][col - 1] == 0) {//left count = 1 + countInside(row, col - 1, map); } if (room[row][col + 1] == 0) {//right count = 1 + countInside(row, col+1, map); } return count; } }